一些收藏

分布式配置中心Apollo

2021-01-24  本文已影响0人  后来丶_a24d

目录


环境搭建

  1. 先执行apollo项目下的scripts初始化数据库
  2. apollo-assembly配置,数据库密码注意替换
vm参数: -Dapollo_profile=github -Dspring.datasource.url=jdbc:mysql://localhost:3306/ApolloConfigDB?characterEncoding=utf8 -Dspring.datasource.username=root -Dspring.datasource.password=******

program参数: --configservice --adminservice
  1. 在apollo-portal里面配置, 数据库密码注意替换
vm: -Dapollo_profile=github,auth -Ddev_meta=http://localhost:8080/ -Dserver.port=8070 -Dspring.datasource.url=jdbc:mysql://localhost:3306/ApolloPortalDB?characterEncoding=utf8 -Dspring.datasource.username=root -Dspring.datasource.password=******
  1. apollo-client端可以通过client端下各个test启动
  2. portal: http://localhost:8070/. eurka: http://localhost:8080/.

源码解析

总体

apollo客户端

概述
客户端获取配置
客户端获取配置.png
客户端获取配置1.6 create步骤深入
uml类图.png
1.6 create步骤深入.png
观察者模式这时可以实现通知
观察者模式实现通知.png

apollo config端

概述
总览
总览.png

基于apollo的思考

  1. 集群
  2. 客户端内存缓存+文件缓存
  1. 客户端长轮询 + 定时轮询 长轮询是定时轮询的补充
  2. 配置修改近实时生效
  1. 客户端缓存
  2. 集群
  3. 配置修改近实时生效
  4. 长轮询的形式避免http请求建立销毁
  5. 服务端用的local cache做缓存,避免一直读取数据库
  6. 本身apollo 各个appid配置数据量不大
  1. 请求量多,读多写少
  1. 1.7之后client端调用config service有增加签名key保证安全性
  2. portal调用admin端用spring security授权之类的
  1. 通过eurka服务注册发现知道config service服务集群ip地址,简单的客户端轮询调用。
  1. Model更侧重UI界面提交“复杂”业务请求。vo,侧重 UI 界面返回复杂业务响应
  2. dto可以在controller和service传输,也可以用在前端到controller传输
  3. PO 对象,可以考虑不暴露给 Controller 层,只在 Service 和 Repository 之间传递和返回
  4. 服务内调用用的标准request response。但是如果管理后台调用的话,dto传输,vo返回,h5前端也走规范
  5. 参考文章Portal源码解析,其中包含vo+dto+po用法总结的图


    总结.png

参考文章

上一篇 下一篇

猜你喜欢

热点阅读