SpringCloud微服务和其他服务⽐较
⽂章⽬录
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),导致两个框架的性能差距略⼤