技术规范
基础开发依赖
spring-cloud-dependencies 2.2.5<br>
spring-cloud-alibaba-dependencies 2.2.3<br>
网关
spring-cloud-starter-gateway 2.2.5
spring-cloud-starter-alibaba-sentinel 2.2.3
服务调用
spring-cloud-starter-openfeign 2.2.5<br>
spring-cloud-starter-netflix-ribbon 2.2.5<br>
数据操作
JDBC
druid-spring-boot-starter 1.2.1<br>
ORM
pagehelper-spring-boot-starter 1.3.0
分库分表、数据加密
sharding-jdbc 4.1.1<br>
缓存
spring-boot-starter-data-redis 2.2.5<br>
jetcache-starter-redis 2.6.0<br>
消息中间件
spring-cloud-starter-stream-rocketmq 2.2.3
分布式事务
管理系统
Ant Design Vue
kalvan-admin
kalvan-gen
分布式运维工具
分布式日志ELK
分布式链路追踪SkyWalking
分布式应用监控告警Grafana+Prometheus
外部API网关<br>
说明:提供给外部合作方接入的接口网关通过nginx负载提供公网服务
接口标准<br>
https post提交
公共报文域
appId
为接入方分配的唯一开放平台ID<br>
sign
对data json数据明文签名<br>
msgId
消息报文Id由接入方传入唯一方便查找日志<br>
业务报文体
根据具体业务接口定义的参数json对象通过data域提交
数据安全
RSA密钥
接入方一对RSA密钥
私钥由接入方保管,公钥上传到平台
平台固定一对RSA密钥
私钥由平台方自己保管,公钥提供给接入方
数据加密
使用aes对称加密
接入方使用平台公钥加密key
平台使用平台私钥解密key
数据签名
接入方使用私钥对明文数据data签名
平台使用接入方上传的公钥对签名进行验证
数据字典
统一请求参数命名
如表示银行信息统一使用bank_开头
bank_account_name
bank_account_no
bank_type
bank_name
统一返回码
API统一转换内部码包装返回<br>
建议用英文简写
如账号不存在ACCT_NOT_EXISTS
流量控制<br>
系统总流量控制<br>
按场景进行流量控制<br>
按appId请求资源进行流量控制<br>
流量动态监控和动态配置
资源集群流量控制
服务降级<br>
服务熔断<br>
依赖服务<br>
Sentinel<br>
阿里开源分布式系统的流量防卫组件<br>
工作原理:每次资源调用都会创建一个 Entry 对象和一系列功能插槽
NodeSelectorSlot资源路径收集和存储
StatisticSlot统计实时信息
FlowSlot根据预设的限流规则和动态规则来做限流
DegradeSlot根据统计信息以及预设的规则来做熔断降级
AuthoritySlot根据配置的黑白名单和调用来源信息来做黑白名单控制
SystemSlot系统负载保护
提供控制台可视化
配置数据持久化扩展Apollo
监控数据持久化扩展(秒级数据默认保留5分钟)
集群流控<br>
redis<br>
限流当不使用sentinel时可选
身份鉴定
分配appId<br>
rsa密钥签名认证<br>
ip绑定<br>
域名绑定<br>
依赖服务<br>
安全控制服务<br>
加解密服务
本地缓存
MQ接收消息-缓存更新
权限控制<br>
全局接口控制<br>
调用方接口控制<br>
依赖服务<br>
安全控制服务<br>
本地缓存
MQ接收消息-缓存更新
服务调用<br>
负载均衡<br>
Feign默认集成了Ribbon负载均衡
默认是轮循
服务mock
API实时计算
调用统计定时异步推送<br>
(调用方、调用接口、调用次数、成功率、失败率、限流阻断次数)
数据模型日志埋点
借助ELK来运算展示监控图片实现告警<br>
依赖服务<br>
MQ消息推送统计数据
ES日志存储
SDK支持
配置测试白名单自动加密、签名
提供各环境各语言的本地调用函数库
内部API网关<br>
说明:提供给内部其它系统接入的接口网关通过nginx负载提供内网服务,只做基本控制和透传
流量控制<br>
系统总流量控制<br>
按场景进行流量控制<br>
按appId请求资源进行流量控制<br>
流量动态监控和动态配置
服务降级<br>
服务熔断<br>
依赖服务<br>
Sentinel<br>
redis<br>
身份鉴定<br>
分配appid<br>
ip绑定<br>
域名绑定
依赖服务<br>
安全控制服务<br>
本地缓存<br>
MQ接收消息-缓存更新
权限控制<br>
全局服务控制<br>
调用方服务控制<br>
依赖服务<br>
安全控制服务<br>
本地缓存<br>
MQ接收消息-缓存更新
服务调用<br>
负载均衡<br>
Feign默认集成了Ribbon负载均衡
默认是轮循
服务Mock
只能用于开发测试环境<br> 定义发布接口就可以调试<br> 模拟一些外部没有测试环境的服务结果
动态路由<br>
动态发布接口<br>
动态删除接口
路由参数配置
依赖服务<br>
安全控制服务<br>
MQ接收消息-缓存更新
API实时计算
调用统计定时异步推送<br>
(调用方、调用接口、调用次数、成功率、失败率)
数据模型日志埋点
借助ELK来运算展示监控图片实现告警<br>
依赖服务<br>
MQ消息推送统计数据
ES日志存储