KK 架构训练营 - Week1
作业题
思考和整理自己日常工作中架构相关事项,以班为单位,提交信息汇总。
1)自己工作中的哪些任务是跟架构相关的?
2)能否大概描述自己负责的/做过的业务系统的业务需求和大概流程?
3)能否讲清楚自己目前负责的系统使用的各类技术,框架,以及组件,模块等。
本人所在的团队, 目前业务主要服务于政府/企业/高校等, 开发业务流程类/舆情处理类的软件系统. 目前业务系统主要基于 Spring Cloud Netflix 技术栈搭建的微服务体系, 业务流程主要用到 MySQL 数据库, 部分有国产化要求的采用的达梦数据库, 缓存中间件采用 Redis, 文件存储基于 FastDFS, Nginx; 框架主要涉及 Spring Boot, Spring Cloud (Eureka, Feign, Spring Cloud Gateway), Apollo Config, 工作流引擎 Flowable, 分布式任务调度 PowerJob, Canal 等. 数据处理主要基于 Kafka, 算法部分则由 NLP 组负责. 监控体系基于 Prometheus, Skywalking 等.
日常工作中, 我负责的与架构相关的工作包括一下几个方面.
负责一部分基础服务的编码及维护, 包括登录服务, 用户中心管理服务, 用户查询服务等;
负责一部分新技术的调研, 比如组内落地的分布式任务调度中间件 PowerJob; 尝试(项目暂时未上线, 还在持续验证中)在某业务上使用 TiDB 等;
推动后台组知识库的建设.
最近负责某业务系统, 采用专网+互联网双端协作的模式, 系统在专网对接上级的系统, 读取到数据后通过 WebSocket 发通知给用户, 用户(总的负责人)按业务流程, 派发给专网及互联网端的执行人, 由各单位的执行人办理并反馈情况, 总的负责人再向上级反馈办理情况. 双网端同步, 包括数据库同步和文件同步, 通过网闸设备实现.
如下是采用 Canal + Kafka 实现双端文件的同步.
https://www.processon.com/view/link/61459d35637689589ed7f49f
目前业务主要采用的技术栈包括:
流量网关: Nginx
数据库: MySQL, 达梦(部分项目要求必须采用国产数据库)
文件存储: FastDFS
缓存: Redis
业务开发框架:
Spring Cloud Netflix, 具体是: Eureka + OpenFeign + Gateway(包括一套业务网关, 和一套对接三方鉴权的对外网关)
配置中心采用 Apollo Config
分布式任务调度采用 PowerJob
工作流引擎采用 Flowable
Binlog 订阅触发采用 Canal
消息队列: Kafka
监控体系: Prometheus
调用链监控: Skywalking
【分组学习讨论环节】组内自行选出组长,组长带领大家沟通讨论自己公司的架构演进过程,思考与主流演进的差异,考虑为什么会有这些的演进选择,写成这样一个调研方案。(如果加入公司不久,不太清楚,可以去问老人,也可以写自己上一家公司的。如果都没有,那么就找一个同组人的案例一起来完成)
业务为啥基于 Spring Cloud Netflix?
部门最初是基于 Struts + Oracle 编写的单体应用, 在 2019 年的时候, 领导决定切换架构, 由前同事调研选型, 最终定的这一套架构. 没有采用 Dubbo 的原因, 一者是 Http 协议可读性更好, 另外在那个时间点, Spring Cloud Netflix 热度更高. 而 Spring Cloud Alibaba 体系则是后台才诞生的;
为啥没有容器化的部署技术?
目前架构依然能运行还比较稳定, 且业务流量也不大, 切换容器技术, 没有明显的收益?
需要有人能学习好 K8S 相关体系, 目前暂时还没, 当然这也是机遇, 哈哈哈.
分布式任务调度为啥选了 PowerJob
最开始调研任务调度是因为产品设计的, 需要在未来任意的某一秒执行业务逻辑. 调研了一圈, 开源方案里, 也就 PowerJob 提供了相关的 API, 其他解决方案, 如 Xxl-job 是没有相关 API.
版权声明: 本文为 InfoQ 作者【jjn0703】的原创文章。
原文链接:【http://xie.infoq.cn/article/864751c386b37515ba9688bdd】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论