系统架构演变
RPC与Http

1.最传统的架构

tomcat
后台,前台,用户管理,订单的管理,

单点故障,一台挂掉,全部挂掉
并发能力低
代码耦合度高,你调用我,我调用你,想要优化某一个模块,改动太大
无法水平扩展其中某一个业务,要么都扩展,要么都不扩展。

维护简单

springcloud 禁用heapdump下载_用户管理

2.水平切分,分成,web,service,dao

web,service,mapping
还是打成一个war包,一起运行,与上一个没什么区别

3. 垂直拆分,功能角度拆分

分布式,
用户管理,订单,购物车,每个功能在一个服务器

方便水平扩展,
方便对单个模块优化
功能解耦合
提高并发

增加维护成本
重复开发,
用户管理层:controller,service,mapper UserMapper User对象
订单:controller,service,mapper UserMapper User对象

改了User对象,用到了User对象的服务都需要改。万一有的团队没改,出问题。

springcloud 禁用heapdump下载_用户管理_02

解决代码冗余。重复开发

每个工程都需要User对象,每个工程都需要维护UserMapper和User对象等

springcloud 禁用heapdump下载_User_03


调用关系错综复杂。

维护困难

SOA面向服务

需要什么服务,将自己注册进去

注册中心统计,自动匹配

自己有什么服务,将自己注册进去

springcloud 禁用heapdump下载_服务器_04

微服务,相比SOA,力度更细

springcloud 禁用heapdump下载_服务器_05


每个团队都只关心自己的数据库,数据库只对某一部分人可见。数据安全。

注册中心监控服务器,如果挂掉了,通知。

单一职责

面向服务,每个服务都要对外暴露res风格的服务接口API。不关心具体实现。平台与语言无关。只要给我服务就好

rest风格:暴露一个请求路径,通过路径直接访问,通过浏览器访问?
java接口访问,访问接口就可以直接获取数据了。

springcloud 禁用heapdump下载_用户管理_06