架构系列-可扩展架构模式
一、基本思想和模式
基本思想:拆。按流程、按服务、按功能。按流程拆难理解,固化的内核,移动的数据,如接口层 - 业务层 - 数据层 - 存储层。
扩展方式:拆了以后修改和扩展不影响其他模块。按流程拆有分层架构、按服务拆有微服务架构和SOA、面向功能拆有微内核架构。
二、分层架构和SOA
分层架构:如B/S、C/S、MVC、MVP等。
SOA:可以说某企业使用SOA架构了IT系统,而不是某独立系统采用SOA架构。主要对传统企业IT部门。组织架构、员工信息、请假管理等子系统+企业服务总线ESB,组成一个SOA架构的系统。SOA复杂难学,ESB是性能瓶颈。
三、微服务
1、方法:
关键点:small、lightweight、automated。
每三个人一个服务,根据团队规模来持续拆,而不是上来就拆的很细
拆分方式;按业务拆、按稳定功能和可变功能拆、按可靠性拆(保证核心功能更可靠)、按性能拆(以免血崩)。不是四选一,而是自由组合。
基础服务完善,包括不限于发现注册、容错、路由第一优先,API网关、接口框架第二优先,自动化测试、部署、配置中心第三优先,监控、跟踪、安全第四优先。技术服务不足,微服务就成了焦油坑。根据团队规模和需要,不一定每一项都有。
2、基础服务:
自动化测试、自动化部署、配置中心:是为了将放人力。
接口框架:提供统一http服务和json格式
接口网关:外部系统不应该调多个服务在组装,而是一个接口搞定。另外权限控制、流量控制、传输加密。
注册发现:自理式是每个服务统一注册自己做发现。代理式是注册发现有独立服务,但是独立服务需要关注可靠性。
路由:服务节点的挑选
容错:故障时剔除节点和服务熔断。
监控、跟踪:排查方便。
安全:数据安全、传输安全、接入安全。可继承到配置中心实现。
四、微内核
微内核指插件化架构,分稳定不动的核心模块和跟随业务发展的插件模块。如手淘的atlas。
设计关键点:插件管理:核心模块可用代码数据库配置中心等配置各插件信息和加载时机。插件链接:插件如何连接到核心模块。插件通信:解耦的插件因业务需要必然会彼此调用。
OSGI:如eclips。
规则引擎:常见于保险和促销,满多少减多少,打几折各种规则组合。如Drools