- 单体架构
- 概念:单体架构也称之为单体系统或者单体应用,是一种将所有功能、模块耦合到一起的架构方法。
- 特点:
- 打包成独立的单元,以war包或者jar包形式。
- 以一个进程的方式来运行。
- 优缺点
- 优点:
- 易于管理
- 部署简单
- 缺点:
- 测试成本高
- 可伸缩性差
- 可靠性差
- 迭代困难
- 跨语言程度差
- 团队协作困难
- 优点:
- 微服务架构
- 概念:一种架构风格。体现为,一个大型系统或应用,由一个或者多个服务组成。系统中的各个微服务可以被独立部署,相互之间是低耦合的,每个服务仅关注于很好地完成一项任务。
- 优点:
- 测试成本低
- 可伸缩性强
- 可靠性强
- 跨语言程度高
- 团队协作容易
- 系统迭代容易
- 缺点:
- 部署数量众多,运维成本高
- 接口需要兼容多个版本
- 带来分布式系统的复杂性
- 面临分布式事物的处理
- mvc架构、rpc架构、soa架构、微服务架构的区别
- 1、 MVC 架构其实 MVC 架构就是一个单体架构。代表技术:Struts2、SpringMVC、Spring、Mybatis 等等。2、 RPC 架构RPC(Remote Procedure Call):远程过程调用。他一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。代表技术:Thrift、Hessian 等等3、 SOA 架构SOA(Service oriented Architecture):面向服务架构ESB(Enterparise Servce Bus):企业服务总线,服务中介。主要是提供了一个服务于服务之间的交互。ESB 包含的功能如:负载均衡,流量控制,加密处理,服务的监控,异常处理,监控告急等等。代表技术:Mule、WSO24、 微服务架构微服务就是一个轻量级的服务治理方案。代表技术:SpringCloud、dubbo 等等
-
- 微服务架构的设计原则
- AFL拆分原则
- 前后端分离原则
- 无状态服务
- RestFul通信风格
AFK可扩展立方体
-
- 对于可扩展的系统架构一直有一个理念:通过增加机器就可以解决容量和可用性问题。
- 这一理念在“云计算”概念疯狂流行的今天,得到了广泛的认可!对于一个规模 迅速增长的系统而言,容量和性能问题当然是首当其冲的。但是随着时间的向前,系统规模的增长,除了面对性能与容量的问题外,还需要面对功能与模块数量上的增长带来的系统复杂性问题以及业务的变化带来的提供差异化服务问题。而许多系统,在架构设计时并未充分考虑到这些问题,导致系统的重构成为常态,从而影响业务交付能力,增大成本开发!对此,《可扩展的艺术》一书提出了一个更加系统的可扩展模型—— AKF 可扩展立方 (Scalability Cube)。这个立方体中沿着三个坐标轴设置分别为:X、Y、Z。
-
X轴 —— 代表无差别的克隆服务和数据,工作可以很均匀的分散在不同的服务实例上(加机器,做集群),扩展成本低。
Y轴 —— 关注应用中职责的划分(功能的划分,基于业务),比如数据类型,交易执行类型的划分;我们一般用动词或资源进行分离,比如:
登录,查询,结算等等。把同样的工作分割成流水线式的工作流或并行的处理流,Y轴代表的更多是对工作的“工业革命”,将耦合紧密的
工作进行进行专门处理。Y轴实质代表责任、行动或数据。实施成本一般比X轴扩展代价高。假如有100个人造100辆车,每个人负责
造一辆,完成造车全部的任务,不如让100个人执行子任务,如发送机的安装、喷漆、四轮定位。这样就会减少前后交互所需要的上下文
信息,更专注做某件事情。扩展成本高于x轴扩展。
Z轴 —— 关注服务和数据的优先级划分,如分地域划分。扩展成本最高。