# 平臺簡介
* 2017年做`crm`系統時,提出***模型+元數據*** 概念,實際落地得到基于業務建模的數據結構。
* 2018年系統更名為`om`(運維管理定位),在模型引擎基礎上,加入服務接入模塊,能快速構建新的服務以及代理第三方服務。
* 2019年接觸到網關概念,基于`openresty+lua`實現網關(`ebus`)并接管權限認證和用戶登陸等功能。`om`系統加入應用和微服務模塊,基本實現基于應用的服務接入、發布、訂閱、調用的統一流量入口式服務網關。
* 2020年系統更名為`CSP`(定位服務提供+運維管理)。引入插件式開發機制,實現應用插件化熱部署。原來網關重構為`java`版本(加密庫工具庫支持較好)。(迭代中......)
到目前為止,平臺框架圖大致如下:

## 組件描述
* 網關`gateway`:`ebus`重構的`java`版本,增強前端應用線上代理等功能。
* 注冊中心`registry`:定時輪詢數據庫插件配置信息到zk,對外提供相關`dubbo`接口,文件服務接口提供。
* 容器`container`:集成插件化,為插件運行加載各種擴展能力。監聽`zk`,自動完成插件裝卸載。
* 插件`plugin`:針對不同業務實現插件,比如`csp-plugin-agentservice`,`csp-plugin-admin` 等等。
* 技術選型:`springboot + zookeeper + dubbo + redis + kafka + springboot-plugin-framework + vue + curator + oracle/mysql`
* 工作年限:5-6年經驗(2020-2021年)
# 項目收獲
## 視野收獲
1. 從業務平臺視角切換到通用基礎平臺視角,能將業務中的公用的部分抽象提煉抽成基礎組件。
> 將業務定時任務抽成定時任務子系統。
> 將業務系統中歷史不變的數據做歸檔操作形成業務歸檔系統。
> 基于發布訂閱模式,實現數據生成,訂閱主動推送形成數據分發子系統。
2. 從平臺部署角度,更加熟悉按業務分庫,業務主鍵分表,基于`dubbo`微服務做分布式部署。
3. 從網關`nginx`層,熟悉代理前端`vue`資源,和反向代理后端`api`。
4. 引入`插件化`機制,實現基于插件的`熱插拔`。
## 技術提升
1. 熟悉`openresty + lua`的`nginx`開發。
2. 熟悉基于`curator`的`zookeeper`編程,實現分布式協調。
3. 熟悉`springboot plugin framework`的插件化編程,實現不同的業務插件。
4. 熟悉`lombok`的`@Data`,`@Slf4j`等注解。(編譯操作`AST`)
5. 熟悉`nginx`的`vue`資源代理,后端負載均衡和反向代理等基礎使用。
6. 熟悉`kafka`的基礎編程,包括`@KafkaListener`和`api`方式實現消費者的批量消費。