J2EE
2024-05-28 20:40:24 101 举报
AI智能生成
java架构 java
作者其他创作
大纲/内容
前端交互
为第三方提供token、鉴权、提供资源
优点
资源服务器与鉴权服务器交互频繁
缺点
oAuth2
为资源服务器提供公钥来简单鉴权服务器用私钥加密的token
JWT
Shiro
Spring suce
身份认证
安全
实体、值对象、聚合
DDD领域驱动设计聚合
多段提交
事物边界:业务常量当中最小的基本单位
命令查询间隔责任
数据对象
领域模型
事件源
分布式事物
Spring-JDBC
每项微服务都应该拥有并控制自己的数据库,且任意两项服务不应共享同一套数据库
原则
分布式数据库
通过订阅由命令侧发布的事件来保持视图(view)与聚合(aggregate)同步
多存储类型的查询
ReportingDatabase
CQRS命令查询责任分离
联合查询
Zookeeper(CP:一致性、容错性)
包含servlet应用所拥有的配置
server服务端
微服务通过client与Eureka进行通讯
client客户端
核心功能实现:存储、请求、查询、peer节点控制、注册周期控制、amazon AWS服务
core
拆解
HTTP响应做了缓存
已注册信息缓存
负载均衡组件Ribbon缓存服务列表
缓存(新的服务发现得等多个缓存结束后)
注册信息二次传播
ip自动选择
特点
Eureka(AP:可用性、容错性)
go语言
Consul(CP:一致性、容错性)
etcd(CP:一致性、容错性)
HA
LoadBalance
cluster
动态服务发现
服务配置
服务元数据
管理
nacos
服务发现
Ribbon客户端负载均衡(RestTemplate)
Hystrix服务端容错保护
Feign
和注册中心进行交互,包括注册服务、订阅服务、服务变更通知、服务心跳发送等功能
注册register
RPC服务的描述和RPC服务的配置管理,用来完成统计、并发限制等功能。
协议protocol
RPC请求中的参数、结果等对象进行序列化与反序列化
序列号serible
使用Netty nio的TCP长链接进行服务器通讯
通讯transport
Client端使用,负载均衡控制
集群cluster
模块
motan
RPC
分布式服务处理
mongodb
redis-cluster
无中心节点
选举(zab)
数据一致性同步(2pc投票)
leader
中心节点
redis
内存数据
介绍:一套功能上的支持,有13个技术规范
spring
业务解耦
异步处理
一个分布式发布-订阅消息传递系统
高吞吐、分布式的消息日志
消息持久化保存
consumer顺序处理和回归处理(redis没有)
响应消息队列
容错性
consumer group下的consumer thread的数量等于partition数量
每个service里面的kafka consumer数量都小于对应的topic的partition数量,但是所有服务总的consumer数量之和等于partition的数量
优化
问题
consumer thread可以同时处理多个partition,但最好是一对一
Consumer
每组消费一个主题都会读完全部分区再给下一个
ConsumerGroup
一起选举出一个Broker后其他追随,Broker后再如此循环选举
Broker Leader
Consumer增加或删除会触发 Consumer Group的Rebalance
Broker的增加或者减少都会触发 Consumer Rebalance
Consumer Rebalance
Delivery Mode
功能
kafka
RabbitMQ
rocketmq
工具
消息队列
连接数目比较小且固定的架构
BIO同步阻塞
连接数目多且连接比较短(轻操作)
NIO同步非阻塞
连接数目多且连接比较长(重操作)的架构
AIO异步非阻塞
socket
protoBuf:数据存储和作为rpc数据交换格式
Channel桥梁
Buffer
Selector主线程单线程循环监听
插件
netty
多个BET作为consumer去互斥的(for update悲观锁)并发处理message
集消息队列
mqtt
activemq
半商业开源
emqt
商业服务
HiveMQ
moquette
mosquitto
RabbitMQ+mqtt插件
消息通讯
支持事物:每条都会创建事物
可包含外键
通过主键聚焦索引:
不保存总条数
不支持全文索引
提供行锁,不确定范围时会锁全表
innodb
不支持外键
支持全文索引、多字段联合索引
支持AUTO_INCREMENT保存总条数
数据不易恢复
支持LOAD TABLE FROM MASTER操作
提供行锁
myISAM(废弃,可用缓存替代)
表类型
是所有操作的最小控制,要么全部执行通过,要不全部不通过并可回滚
Atomicity元子性
数据的最终状态与输入前是一致的
一致性
每个事物独立地有序执行
Isolation隔离性
事务提交操作成功后变写入数据库不可回滚
Durability持久性
记:致远隔持
acid
事物
innodb_buffer_pool_size:缓存innodb表的索引,插入数据时的缓冲。一般是内存的70%-80%
sync_binlog:
innodb_log_file_size:
配置
SQL
存储引擎
垂直分片(根据业务)
水平分片(打乱重整)
划分类型(分透明分片和非透明)
数据分片
动态扩容
mySQL
hadoop
大数据处理
子主题
SpringCloud-Zuul
kong(基于openresty)
openresty(nginx的高并发支持)
统一接入
流量管控
协议适配转发
安全防护
微服务网关
配置管理(configuration management)服务发现(service discovery,也就是服务注册中心)断路器(circuit breakers,也叫熔断器)智能路由(intelligent routing,通常用来做 API-Gateway 实现)控制总线(control bus)微代理(micro-proxy)全局锁(global locks)领导选举(leadership election)一次性令牌(one-time tokens)分布式会话(distributed sessions)集群状态管理(cluster state)
Eureka Client:一个Java客户端,用于简化与 Eureka Server 的交互(通常就是微服务中的客户端和服务端)
Eureka Server:提供服务注册和发现的能力(通常就是微服务中的注册中心)
服务发现(Eureka)
断路器(Hystrix)
智能路由(Zuul)
客户端软负载均衡(Ribbon)
Spring Cloud Netflix
子项目
springCloud
引入关联jar包
自动配置注入bean
starter(第三方插件也提供该jar)
使用限制:public可见度的方法上,可以被应用于接口定义和接口方法,方法会覆盖类上面声明的事务。
指定异常回滚:@Transactional(rollbackFor = Exception.class)
只有程序异常和运行异常才会回滚
只用throw抛出异常给控制层
如果业务层(注解的那个方法)捕捉异常并处理了也不会回滚
注意
@Transactional
事物管理
@ExceptionHandler
@ControllerAdvice
ControllerAdvice + ResponseBody
@RestControllerAdvice
全局异常处理
spring-boot2
J2EE(java Enterprise Editon 服务器端应用)
0 条评论
回复 删除
下一页