文章目录
1 各个服务直观图
2 单体架构
单体架构也称之为单体系统或者是单体应用。 就是一种把系统中所有的功能、模块耦合在一个应用
中的架构方式
2.1 单体架构的特点
- 打包成一个独立的单元(导成一个唯一的 jar 包或者是 war 包)
- 会一个进程的方式来运行
2.2 单体架构的优缺点
2.2.1 优点
- 项目易于管理
- 部署简单
2.2.2 缺点
- 测试成本高
- 可伸缩性差
- 可靠性差
- 迭代困难
- 跨语言程度差
- 团队协作难
3 MVC、 RPC、 SOA、 微服务架构之间的区别
3.1 MVC 架构
其实MVC
架构就是一个单体架构。代表技术:Struts2
、 SpringMVC
、 Spring
、 Mybatis
等等。
3.2 RPC 架构
RPC(Remote Procedure Call)
: 远程过程调用。 他一种通过网络从远程计算机程序上请求服务, 而不需要了解底层网络技术的协议。
代表技术: Thrift
、 Hessian
等等
3.3 SOA 架构
SOA(Service oriented Architecture)
:面向服务架构
ESB(Enterparise Servce Bus):企业服务总线
, 服务中介。 主要是提供了一个服务于服务之间的交互。
ESB
包含的功能如: 负载均衡, 流量控制, 加密处理, 服务的监控, 异常处理, 监控告急等等。
代表技术: Mule
、 WSO2
3.4 微服务架构
微服务就是一个轻量级的服务治理方案。代表技术: SpringCloud
、 dubbo
等等
3.5 SpringCloud微服务架构和SOA架构
3.5.1 SOA 架构
因为传统项目的耦合度比较高,所以架构的发展逐步面向服务化,将共同的业务逻辑抽取出来,形成一个服务,可以供其他服务所调用,服务和服务之间的调用通过RPC
远程调用(底层就是httpclient
技术)
SOA
架构中通常使用xml
实现通讯,xml 比较重
,占宽带,相对冗余,在高并发情况下,很受影响。底层是使用webservice
技术,ESB 消息总站
3.5.2 微服务架构
Springcloud
就是微服务架构,是由SOA
架构发展而来,没有ESB
总站的传输方式,采用http + json
轻量级的传输方式- 微服务的架构更加的轻量级
- 微服务架构中,服务的独立性更加的强,可以有独立数据库,独立的缓存、数据库、消息队列等资源,保障服务与服务之间更加的不受影响
- 微服务架构中,服务化的粒度更加的精细,所以,更加适合敏佳开发
3.5.3 springcloud微服务架构
SpringCloud
提供了一套完整的微服务解决方案,不像其他框架只是解决了微服务中某个问题。
主要可以分为:
- 服务治理(注册中心):Dubbo (阿里巴巴),Dubbox(当当网在Dubbo继续开发的),Eureka(已经闭源了),consul
- 分布式配置中心:disconf(百度)、Netfix的Archaius、360的QConf、SpringCloud、携程的阿波罗等。
- 分布式任务调度平台:xxl-job
- 服务跟踪:hyra(京东),springcloud的sleuth等
3.6 springcloud和Dubbo对比
Dubbo
比Spring Cloud
性能有优势,由于Spring Cloud
与Dubbo
天生使用的协议层面不一样,前者是HTTP
,后者是TCP
(使用的是Netty NIO
框架,序列化使用的阿里定制版Hessian2
),导致两个框架的性能差距略大