软件架构简介


单一系统架构

缺点:
单点故障:只要一处出错,造成整个系统崩溃
并发量低:同时在线人数(400-600)
代码耦合度高:代码中类与类之间的依赖度太高
优点:
维护方便

在单一系统架构上做水平拆分

Web框架(MVC)
分为web视图层,service业务层,dao数据层
优点:
分工明确
缺点:
与单一架构一致

在单一系统架构上做垂直拆分

按照功能模块拆分为多个项目
优点:
并发量高
不存在单点故障
代码耦合度低
方便单独优化
方便水平扩展
缺点:
拆分为多个项目,维护成本增加
重复功能开发

分布式架构

SOA架构 面向服务的架构

在分布式架构的基础上新增注册中心
注册中心作用:
注册服务者
注册消费者

微服务架构

在单独模块中再次拆分项目的方式就可以称之为微服务架构,微服务架构也是分布式架构

前面说的SOA,英文翻译过来是面向服务。微服务,似乎也是服务,都是对系统进行拆分。因此两者非常容易混淆,但其实却有一些差别:

微服务的特点:

  • 单一职责:微服务中每一个服务都对应唯一的业务能力,做到单一职责
  • 微:微服务的服务拆分粒度很小,例如一个用户管理就可以作为一个服务。每个服务虽小,但“五脏俱全”。
  • 面向服务:面向服务是说每个服务都要对外暴露Rest风格服务接口API。并不关心服务的技术实现,做到与平台和语言无关,也不限定用什么技术实现,只要提供Rest的接口即可。
  • 自治:自治是说服务间互相独立,互不干扰
    • 团队独立:每个服务都是一个独立的开发团队,人数不能过多。
    • 技术独立:因为是面向服务,提供Rest接口,使用什么技术没有别人干涉
    • 前后端分离:采用前后端分离开发,提供统一Rest接口,后端不用再为PC、移动段开发不同接口
    • 数据库分离:每个服务都使用自己的数据源
    • 部署独立,服务间虽然有调用,但要做到服务重启不影响其它服务。有利于持续集成和持续交付。每个服务都是独立的组件,可复用,可替换,降低耦合,易维护

服务调用方式

分为RPC和HTTP两种通讯方式

  • RPC:Remote Produce Call远程过程调用,类似的还有RMI。自定义数据格式,基于原生TCP通信,速度快,效率高。早期的webservice,现在热门的dubbo,都是RPC的典型代表

  • Http:http其实是一种网络传输协议,基于TCP,规定了数据传输的格式。现在客户端浏览器与服务端通信基本都是采用Http协议,也可以用来进行远程服务调用。缺点是消息封装臃肿,优势是对服务的提供和调用方没有任何技术限定,自由灵活,更符合微服务理念。Rest风格通过http协议来实现

Dubbo RPC

优点:快,支持大量数据的通讯
缺点:

SpringCloud HTTP

优点:
缺点:


文章作者: zrh
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 zrh !
  目录