一、关于技术选型
为什么要进行技术选型:
降低研发成本,提高研发效率。
1.微服务架构的诞生
单体应用:
所有的模块打包到一起部署运行;例如打包一个War包放到一个Tomcat下运行,这种架构也叫巨石型应用架构,在开发小型项目上有独特优势: 易于调试、部署,运维方便。
缺点:
1、不可靠。任何模块的一个bug,可能拖垮整个应用
2、单维扩展。只能通过运行更多的服务器水平扩展,而不同的应用服务对资源的需求不同
3、不可持续发展。引入新的框架或语言需要重构所有业务模块,往往需要在初期就选定技术栈
SOA应用:
面向服务架构, 它是 一种设计方法,设计上通常是自上而下的,服务间松散耦合。ESB集成不同协议的服务,做消息的转化、解释、路由从而联通各个服务,解决企业通信问题,服务松耦合、可扩展。
缺点:
1、ESB的存在并没有根本解决单体巨石应用的一些问题
2、SOA更多的面向企业服务,服务拆分粒度很大,更多的是为了复用
微服务:
微服务是去中心化的SOA扩展,他强调服务彻底的组件化,一个组件就是一个产品,服务切分力度更小,设计上更多的是自上而下的。服务间通过轻量化的协议进行通信,并根据服务本身需要独立化部署。
2.SOA和微服务的思维区别
SOA:
因为单体巨石应用无法灵活扩展,且部署困难。
自上而下,从运维侧视角出发,更多聚焦可维护性,兼顾可扩展性,从前后端分离切入。
微服务:
因SOA服务粒度太粗,难以有效扩展,微服务应运而生。
自下而上,从产品视角出发,更多聚焦可扩展性, 兼顾可维护性。
3.微服务分层架构图
二、数据访问层选型
所有的数据访问框架都在解决如下两个问题
①数据库连接如何管理?
②数据库查询数据和JAVA对象如何高效映射?
1.Mybatis框架执行流程
2.数据库连接池选型
定义:JDBC连接池,解决需要自己手动建立连接(TCP连接)、关闭连接、连接复用的问题。JDBC连接池有一个标准的接口javax.sql.DataSource。
三、消息中间件选型
消息队列:在消息的传输过程中保存消息的容器,生产者和消费者不直接通讯,依靠队列保证消息的可靠性,避免了系统间的相互影响。
常见MQ比对
MQ选型依据 :
功能不具备一票否决权
重性能、重扩展
技术栈、团队驾驭能力
四、远程通讯框架选型
五、网关层技术选型