工程开发之技术架构选型

一、关于技术选型

目的:降低开发成本、提高研发效率

架构演进:

1)巨石应用

第一代单体应用,所有模块打包到一起部署运行,如打包一个War包放到一个Tomcat下运行

优点:开发小型项目有独特优势,易于调试、部署,运维方便

缺点:不可靠,模块之间没完全解耦,任何模块的一个bug,可能拖垮整个应用;单维扩展;不可持续发展,引入新的框架或语言需要重构所有业务模块

工程开发之技术架构选型_第1张图片

 

2)SOA

即面向服务架构,设计上通常是自上向下的,服务间松散解耦;ESB集成不同协议的服务,做消息的转化、解释、路由从而联通各个服务,解决企业通信问题

优点:服务松解耦、可扩展

缺点:ESB的存在并没根本解决单体巨石应用的一些问题;SOA更多面向企业服务,服务拆分粒度很大,更多的是为了复用

工程开发之技术架构选型_第2张图片

3)微服务

微服务是去中心化的SOA扩展,强调服务彻底的组件化,一个组件就是一个产品,服务切分力度更小,设计上更多是自下而上的;服务间通过轻量化的协议进行通信,并根据服务本身需要独立化部署

工程开发之技术架构选型_第3张图片

二、数据访问层选型

所有数据访问框架都是在解决如下两个问题:

  1. 数据库连接如何管理?2、数据库查询数据和Java对象如何高效映射?

工程开发之技术架构选型_第4张图片

数据库连接池选型

定义:JDBC连接池,解决需要自己手动建立连接(TCP连接)、关闭连接、连接复用的问题;JDBC连接池有一个标准的接口javax.sql.DataSource

常用JDBC连接池:Druid HikariCP DBCP Tomcat-jdbc C3P0

工程开发之技术架构选型_第5张图片

三、常用中间件选型

MQ消息队列

消息队列:在消息的传输过程中保存消息的容器,生产者和消费者不直接通讯,依靠队列保证消息的可靠性,避免了系统间的相互影响

消息模式:P2P模式、订阅模式(一对多)

MQ选型

Kafka:日志领域、大数据(尤其是离线大数据)广泛应用,分布式主从结构、性能非常强、支持消息的批量发送

RocketMQ:成熟、分布式主从结构、支持特定Level的延迟消息、支持事务消息

RabbitMQ:成熟、可自动切换主从

栗子:

工程开发之技术架构选型_第6张图片

四、远程通信框架选型

核心技术点:

工程开发之技术架构选型_第7张图片

栗子(Feign框架调用流程分析):

工程开发之技术架构选型_第8张图片

常用开源远程通信框架综合对比:

工程开发之技术架构选型_第9张图片

五、网关层选型

API网关由来:

工程开发之技术架构选型_第10张图片

网关分类:流量网关与业务网关

API网关部署形式:单节点网关与多节点网关

工程开发之技术架构选型_第11张图片

业务网关技术选型:

工程开发之技术架构选型_第12张图片

你可能感兴趣的:(架构,java,开发语言)