T31项目第10天

T31项目第10天

  • 技术架构选型
    • 1.架构技术架构选项
      • 1.1 巨石架构(单体架构)
      • 1.2 SOA架构
      • 1.3 微服务
      • 1.4 Spring-boot(优秀的构建项目的框架)
      • 1.5 Spring-cloud家族
    • 2.数据库访问层
      • 2.1 JDBC
      • 2.2 Mybatis
      • 2.3 数据库连接池
        • 2.3.1几种常见的连接池
        • 2.3.2 连接池的工作原理
    • 3.中间件的选型
      • 3.1 消息队列
    • 4.远程通信框架的选型
      • 4.1 运行期框架运行状态
      • 4.2 RPC框架核心技术点
      • 4.3 Feign框架的调用
    • 5.网关层的选型
      • 5.1API网关由来
      • 5.2网关的分类
      • 5.3网关的技术选型
      • 5.4 spring-cloud中gateway的原理

今天是孤尽班第10天学习,跟着老师学习了架构分类、数据层、数据库连接池、消息中间件、网关、通信协议的的特性,还需要继续补充学习!

技术架构选型

1.架构技术架构选项

1.1 巨石架构(单体架构)

特点:单体架构,功能无法扩展,业务之间耦合度高,业务之间调用简单方便

1.2 SOA架构

优点:自上而下向下,降低耦合性,通过ESB进行各个模块之间通信
从运维角度出发,聚焦可维护性,兼顾可扩展性,前后端分离
缺点:服务拆分粒度大,通过ESB来统一管理服务之间调用,耦合度高

1.3 微服务

特点:去中心化,将服务组件化,一个组件就是一个产品,服务切分力度更小,设计师自上而下,聚焦可扩展性,兼顾可维护性
主要特性:
业务隔离、并行开发、易于维护、单独部署
总结:不能为了微服务而微服务,需要考虑业务量(qps,ops等)、维护工作量等

1.4 Spring-boot(优秀的构建项目的框架)

具备特性
1.创建spring应用方便,减少开发步骤,简化项目的构建配置
2.内嵌tomcat等,减少第三方应用配置
3.自动配置spring以及第三方库
4.提供生产级别特性

1.5 Spring-cloud家族

T31项目第10天_第1张图片
springcloud
—spring cloud config (配置管理)
—spring cloud nefix(多个组件组成)
—spring cloud Bus(事件、消息)
— spring cloud stream(中间件发送消息封装)
—spring cloud gateway(统一分布式网关)

2.数据库访问层

2.1 JDBC

数据库的链接特性:
开启链接和关闭链接需要手动关闭
服务器连接数有限,不关闭链接会占用链接资源
执行数据库操作的性能效率是封装JDBC的组件(mybatis,mybatis-plus)20%性能
数据库链接数限制:
Mysql5.5 mysql5.6 mysql5.7:默认的最大连接数都是151,上限为:100000,根据不同mysql的版本,连接数也不同
连接数修改查看参考:https://www.cnblogs.com/caoshousong/p/10845396.html

2.2 Mybatis

mybatis执行的逻辑
T31项目第10天_第2张图片

2.3 数据库连接池

JDBC连接池:解决自己需要自己建立连接,关闭链接,连接池中哟哟一个标准的接口:javax.sql.DataSource

2.3.1几种常见的连接池

一.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>

2.3.2 连接池的工作原理

1.连接池的建立
2.连接池中连接的使用管理
3.连接池的关闭

3.中间件的选型

3.1 消息队列

消息传输过程中保存消息的容器,生产者和消费者不直接通信,依靠队列保证消息可靠性,避免系统的相互干扰

分类
P2P模式:生产者通过消息队列直接向消费者发送消息
订阅模式:发布消息者将消息发布到不同的主题,订阅者订阅不同主题的消息;
功能作用:
服务之间解耦,提高系统响应时间
常见消息中间件
kafka,rocketMQ,rabbitMQ
不用消息中间件对比
T31项目第10天_第3张图片
中间件特性参考:https://blog.csdn.net/wqc19920906/article/details/82193316

4.远程通信框架的选型

4.1 运行期框架运行状态

调用方 服务提供方 注册中心
1.服务提供方注册服务到注册中心
2.调用方向注册中心请求服务获取服务提供方的信息(状态,服务ID,IP等信息)
3.调用方与服务提供方建立连接,调用服务

4.2 RPC框架核心技术点

T31项目第10天_第4张图片
注册中心集成:
服务调用:feign,clien等

4.3 Feign框架的调用

T31项目第10天_第5张图片

5.网关层的选型

5.1API网关由来

解决的问题
不用的客户端需要不同数据
客户端需求和每个微服务暴露的细粒度 API 不匹配
客户端的传输协议不同
网关的关注点:
稳定安全:全局性流控,防止web攻击,屏蔽工具扫描,黑白名单,证书/加密处理
保证服务高效可用:服务级别限流,降级,熔断,路由与负载均衡,服务过滤、聚合、发现,多级缓存策略

5.2网关的分类

流量网关/业务网关
流量网关:接入所有的流量,并分发给不同的子系统
业务网关:根据业务来分发给不同的业务模块

单节点网关/多节点网关
多节点:使用需要不同业务数据类型(app,web等)

5.3网关的技术选型

常见网关的对比:
T31项目第10天_第6张图片

5.4 spring-cloud中gateway的原理

客户端–>netty server --> route( predict、filter)–> netty-client -->proxy server (代理服务)
通信模块:Netty

你可能感兴趣的:(spring,cloud,微服务,软件架构)