天天看点

(大型)应用平台的基础架构

(大型)应用平台的基础架构,笔记摘录自---极客时间  李运华  从0开始学架构。

0、首先是架构模型:

(大型)应用平台的基础架构

1、存储层

可以分成两类,SQL数据库,NoSQL数据库。

SQL:一般使用MySQL。业务到一定规模后,需要分库分表。这个要自动化,实力雄厚的大公司此时一般都会在 SQL 集群上建 SQL 存储平台,以对业务透明的形式提供资源分配、数据备份、迁移、容灾、读写分离、分库分表等一系列服务,例如淘宝的UMP (Unified MySQL Platf, rm) 系统。

NoSQL:一定规模后,同样会有分库分表问题。需要封装成存储平台,方便使用。

小文件存储:一般就使用开源平台,起步时使用云平台更方便。

2、开发层(类似于底层操作系统平台)

尽量选择问题域内成熟框架、和开发语言关联的服务器。

开发框架:一般和解决的业务问题、使用的开发语言关联。例如:SSH、ThinkPHP等。公司内针对同一问题域应统一.

服务器:web服务器等

容器:虚拟机虽然跨平台,但并不如Docker在互联网领域真正得到广泛应用。

3、服务层(支撑服务,而非业务服务)

配置中心、服务中心、消息队列(如Kafka)。

开发层+服务层  ,应该叫公共支撑或支撑服务层,有点类似于SOA中的ESB。

4、网络层(参见高可靠性、可用性扩展设计)

a、负载均衡:保证性能和可用性。常见方案:DNS(HTTP-DNS),其实可以理解成根据IP地址hash来分配业务量;

Nginx、LVS等软件均衡方案;F5等硬件方案。

b、CDN

c、多机房/多中心

5、用户层、业务层

a、用户管理:单点登录技术 / 第三方接入-授权登录 b、消息推送:一般用开源的  c、存储云、图片云:针对小图片存储。

6、平台技术

a、运维平台:  

运维平台核心的职置分为四大块:配置、部署、监控、应急。

运维平台的核心设计要素是  “四化”:标准化(不相同的系统,封装成规范接口)、平台化(不同系统的不同操作尽量集成到一个运维系统,该系统就是运维平台)、自动化(自动采集、归总、刷新)、可视化(仪表盘)

b、测试平台:自动化、对相关的用例、资源、数据和测试管理集成到一起。

c:数据平台:采集、管理分析、应用等集成到一起。

d:管理平台:核心就是权限管理,实质是身份认证、权限控制。