特点:单体架构,功能无法扩展,业务之间耦合度高,业务之间调用简单方便
优点:自上而下向下,降低耦合性,通过ESB进行各个模块之间通信
从运维角度出发,聚焦可维护性,兼顾可扩展性,前后端分离
缺点:服务拆分粒度大,通过ESB来统一管理服务之间调用,耦合度高
特点:去中心化,将服务组件化,一个组件就是一个产品,服务切分力度更小,设计师自上而下,聚焦可扩展性,兼顾可维护性
主要特性:
业务隔离、并行开发、易于维护、单独部署:
总结:不能为了微服务而微服务,需要考虑业务量(qps,ops等)、维护工作量等
具备特性:
1.创建spring应用方便,减少开发步骤,简化项目的构建配置
2.内嵌tomcat等,减少第三方应用配置
3.自动配置spring以及第三方库
4.提供生产级别特性
springcloud
—spring cloud config (配置管理)
—spring cloud nefix(多个组件组成)
—spring cloud Bus(事件、消息)
— spring cloud stream(中间件发送消息封装)
—spring cloud gateway(统一分布式网关)
数据库的链接特性:
开启链接和关闭链接需要手动关闭
服务器连接数有限,不关闭链接会占用链接资源
执行数据库操作的性能效率是封装JDBC的组件(mybatis,mybatis-plus)20%性能
数据库链接数限制:
Mysql5.5 mysql5.6 mysql5.7:默认的最大连接数都是151,上限为:100000,根据不同mysql的版本,连接数也不同
连接数修改查看参考:https://www.cnblogs.com/caoshousong/p/10845396.html
JDBC连接池:解决自己需要自己建立连接,关闭链接,连接池中哟哟一个标准的接口:javax.sql.DataSource
一.DBCP (Database Connection Pool)
是一个依赖Jakarta commons-pool对象池机制的数据库连接池,Tomcat的数据源使用的就是DBCP。
二.C3P0
是一个开放源代码的JDBC连接池,它在lib目录中与Hibernate一起发布,包括了实现jdbc3和jdbc2扩展规范说明的Connection 和Statement 池的DataSources 对象。
三.Proxool
是一个Java SQL Driver驱动程序,提供了对你选择的其它类型的驱动程序的连接池封装。可以非常简单的移植到现存的代码中。完全可配置。快速,成熟,健壮。可以透明地为你现存的JDBC驱动程序增加连接池功能
四.BoneCP
是一个开源的快速的 JDBC 连接池。BoneCP很小,只有四十几K(运行时需要log4j和Google Collections的支持。BoneCP 的JDBC驱动的加载是在连接池之外的,这样在一些应用服务器的配置上就不够灵活。
五.druid 德鲁伊:
阿里开源的JDBC
github: https://github.com/alibaba/druid
<dependency>
<groupId>com.alibabagroupId>
<artifactId>druidartifactId>
<version>${druid-version}version>
dependency>
1.连接池的建立
2.连接池中连接的使用管理
3.连接池的关闭
消息传输过程中保存消息的容器,生产者和消费者不直接通信,依靠队列保证消息可靠性,避免系统的相互干扰
分类
P2P模式:生产者通过消息队列直接向消费者发送消息
订阅模式:发布消息者将消息发布到不同的主题,订阅者订阅不同主题的消息;
功能作用:
服务之间解耦,提高系统响应时间
常见消息中间件
kafka,rocketMQ,rabbitMQ
不用消息中间件对比
中间件特性参考:https://blog.csdn.net/wqc19920906/article/details/82193316
调用方 服务提供方 注册中心
1.服务提供方注册服务到注册中心
2.调用方向注册中心请求服务获取服务提供方的信息(状态,服务ID,IP等信息)
3.调用方与服务提供方建立连接,调用服务
解决的问题:
不用的客户端需要不同数据
客户端需求和每个微服务暴露的细粒度 API 不匹配
客户端的传输协议不同
网关的关注点:
稳定安全:全局性流控,防止web攻击,屏蔽工具扫描,黑白名单,证书/加密处理
保证服务高效可用:服务级别限流,降级,熔断,路由与负载均衡,服务过滤、聚合、发现,多级缓存策略
流量网关/业务网关
流量网关:接入所有的流量,并分发给不同的子系统
业务网关:根据业务来分发给不同的业务模块
单节点网关/多节点网关
多节点:使用需要不同业务数据类型(app,web等)
客户端–>netty server --> route( predict、filter)–> netty-client -->proxy server (代理服务)
通信模块:Netty