集中式架构
将所有功能部署到一个工程中,简化增删改查,但代码耦合度高,开发困难。之前的ssm项目就是集中式架构。
互联网项目,高并发的使用不理想。
于是进行垂直拆分。将各个功能拆分开来,比如分为用户中心,搜索系统,后台管理系统等。
垂直拆分但各个模块之间无法交互,例如购物车管理要查询商品还需自己去数据库中查询,这与商品管理出现了代码重复,效率降低。
于是就产生了分布式的架构服务。
但应用交互过于错综复杂,如果服务类型过多就很冗杂。
soa面向服务的架构,提供了注册中心,用于提高利用率,更好地资源调配,需要调用服务时不是直接去乱找,而是去注册中心,由注册中心进行统一调配和治理。
但各个服务之间依然依赖关系很深。一个无法启动,就裂开。
soa演变到了微服务。
微服务对于服务进行了更加细致的拆分。拆分到什么程度就是很高级的东西了。
Rest风格服务接口api:如http,有各种语言的解析器,可以跨语言,用起来方便。
如上图:
各个服务分离。cache:缓存层。DB:数据库持久层。
TCP协议:属于传输层的协议。通过三次握手建立连接,四次挥手断开连接。
服务于服务之间调用的方式:
1、RPC(远程过程调用),如dubbo。
2、HTTP(超文本传输协议),如spring Cloud。
rpc调用需要两个服务属于同一种语言,http不需要,所以http更灵活。但http传输的信息冗杂,如响应头里的很多信息都用不到。