C. 高可扩展架构

C. 高可扩展架构
	概述
		前提:都是由普通人组成的团队,而不是高手组成的团队
		基本思想:基本思想都可以总结为一个字:拆
		思路:不同的拆分方式,本质上决定了系统的扩展方式
			面向流程拆分:将整个业务流程拆分为几个阶段,每个阶段作为一部分。
				优缺点
					扩展时大部分情况只需要修改某一层,少部分情况可能修改关联的两层,不会出现所有层都同时要修改。例如学生信息管理系统,如果我们将存储层从 MySQL 扩展为同时支持 MySQL 和 Oracle,那么只需要扩展存储层和数据层即可,展示层和业务层无须变动。
			面向服务拆分:将系统提供的服务拆分,每个服务作为一部分。
				优缺点
					对某个服务扩展,或者要增加新的服务时,只需要扩展相关服务即可,无须修改所有的服务。同样以学生管理系统为例,如果我们需要在注册服务中增加一种“学号注册”功能,则只需要修改“注册服务”和“登录服务”即可,“信息管理服务”和“安全设置”服务无须修改。
			面向功能拆分:将系统提供的功能拆分,每个功能作为一部分。
				对某个功能扩展,或者要增加新的功能时,只需要扩展相关功能即可,无须修改所有的服务。同样以学生管理系统为例,如果我们增加“学号注册”功能,则只需要在系统中增加一个新的功能模块,同时修改“登录功能”模块即可,其他功能都不受影响。
	分层架构
		类型
			C/S、B/S架构
			MVC、MVP架构
			逻辑分层架构
		核心:需要保证各层之间的差异足够清晰,边界足够明显,让人看到架构图后就能看懂整个架构
		本质:分层架构之所以能够较好地支撑系统扩展,本质在于隔离关注点(separation of concerns),即每个层中的组件只会处理本层的逻辑。
		约束:不能跨层访问
	SOA:面向服务的架构
		背景:SOA 出现 的背景是企业内部的 IT 系统重复建设且效率低下,主要体现在:
			企业各部门有独立的 IT 系统,比如人力资源系统、财务系统、销售系统,这些系统可能都涉及人员管理,各 IT 系统都需要重复开发人员管理的功能。例如,某个员工离职后,需要分别到上述三个系统中删除员工的权限。
			各个独立的 IT 系统可能采购于不同的供应商,实现技术不同,企业自己也不太可能基于这些系统进行重构。
			随着业务的发展,复杂度越来越高,更多的流程和业务需要多个 IT 系统合作完成。由于各个独立的 IT 系统没有标准的实现方式(例如,人力资源系统用 Java 开发,对外提供 RPC;而财务系统用 C# 开发,对外提供 SOAP 协议),每次开发新的流程和业务,都需要协调大量的 IT 系统,同时定制开发,效率很低。
		概念
			服务
			ESB:企业服务总线  各种协议、类型的转换
			松耦合:减少服务依赖和相互影响
	微服务架构
	微内核架构
		概念
			微内核架构(Microkernel Architecture),也被称为插件化架构(Plug-in Architecture),是一种面向功能进行拆分的可扩展性架构
		本质
			微内核的架构本质就是将变化部分封装在插件里面,从而达到快速灵活扩展的目的,而又不影响整体系统的稳定。
		基本架构
			核心系统
			插件模块
		关键点
			插件管理:核心系统提供插件注册表(可以是配置文件,也可以是代码,还可以是数据库),插件注册表含有每个插件模块的信息,包括它的名字、位置、加载时机(启动就加载,还是按需加载)等。
			插件连接:常见的连接机制有 OSGi(Eclipse 使用)、消息模式、依赖注入(Spring 使用),甚至使用分布式的协议都是可以的,比如 RPC 或者 HTTP Web 的方式。
			插件通信:插件通信指插件间的通信。虽然设计的时候插件间是完全解耦的,但实际业务运行过程中,必然会出现某个业务流程需要多个插件协作,这就要求两个插件间进行通信。由于插件之间没有直接联系,通信必须通过核心系统,因此核心系统需要提供插件通信机制。这种情况和计算机类似,计算机的 CPU、硬盘、内存、网卡是独立设计的配件,但计算机运行过程中,CPU 和内存、内存和硬盘肯定是有通信的,计算机通过主板上的总线提供了这些组件之间的通信功能。微内核的核心系统也必须提供类似的通信机制,各个插件之间才能进行正常的通信。

猜你喜欢

转载自blog.csdn.net/micklongen/article/details/89745432
今日推荐