需要技术选型的原因: 降低开发成本、提高研发效率
技术选型的顺序问题:先整体再局部,先底层后高层
巨石应用(第一代单体应用)
巨石应用:将所有模块打包到一起部署运行,如打包一个war包放到tomcat下运行的。
优势:对于小项目而言,易于调试、部署,运维方便。
缺点:
1.不可靠。如何一个bug都会拖垮整个应用。
2.单维扩展。只能通过运行更多的服务器水平扩展,而不同的应用服务对资源的需求不同。
3.不可持续发展。引入新的框架或语言需要重构所有业务模块,往往需要在初期定技术栈。
SOA(Service Oriented Architecture)-面向服务架构
面向服务架构是一种设计方法,设计上通常是自上而下的,服务间松散耦合。ESB(企业服务总线,即ESB全称为Enterprise Service Bus,指的是传统
中间件技术与
XML、
Web服务等技术结合的产物。ESB提供了网络中最基本的连接中枢,是构筑企业神经系统的必要元素。)集成不同协议的服务,做消息的转化、解释、路由从而联通各个服务,解决企业通信问题,服务松耦合、可扩展。
优点:可扩展、松耦合
缺点:
1. ESB的存在并没有根本解决单体巨石应用的一些问题(如ESB本身的单点故障问题)
2. SOA更多的面向企业服务,服务拆分粒度很大,更多的是为复用
微服务(去中心化的SOA拓展)
强调服务彻底的组件化,一个组件就是一个产品,服务切分力度更小,设计上更多的是自下而上。服务间通过轻量化的协议进行通信,并根据服务本身需要独立化部署
特点:业务隔离、并行开发、易于运维、单独部署
SOA和微服务的思维区别:
SOA:
1. 由于单体巨石应用无法灵活扩展,且部署困难
2. 设计是自上而下的
3. 从运维侧出发,更多聚焦可维护性,兼顾可扩展性,从前后端分离
微服务:
1. 服务彻底的组件化,可灵活扩展,组合服务使用
2. 设计是自下而上的
3. 从产品侧出发,更多聚焦可扩展性,兼顾可维护性