永辉彩食鲜架构概述
背景
满足整个永辉彩食鲜大B业务从线上到供应链的全线业务系统的研发和维护,保证整个系统的稳定性和性能。
架构思考
大B业务不同于小B业务,它没有常见的业务高并发的场景,所以更多是对业务数据的一致性(业务数据基本都跟财务相关),系统的稳定性和常规故障自动恢复能力有更高期盼和要求。同时伴随业务的及数据增长,整体系统性能要保证的稳定。
总体架构图
架构演进历程
项目基础设施搭建 -> 运维自动化 ->数据库运维构建 -> 分布式基础设施搭建 -> 分布式监控体系构建 -> 分布式框架自研 -> 业务基础服务构建 -> 技术分享 -> 开源社区构建
(大致的推进重新历程如上,实际场景下不分严格先后顺序。)
项目基础设施的建设
涉及 gitlab, svn, jenkins , nesus, sonar, 禅道, 知识库;剥离出永辉自身的研发基础设施,减少频繁的沟通成本,获取系统的管理员权限便于打通研发和运维自动化。
运维自动化
1. 钉钉自动化报警/通知
涉及jenkins,gitlab,禅道,sonar,知识库等自动化集成。
2. jenkins 一键发布
涉及jenkins的一键滚动发布,自动回滚,异常自动重启,便于运维快速发布,避免手工发布的出错。
3. docker 容器集群化
从docker单机版到docker集群版本,逐步验证,逐步推进到线上环境部署,提升现有服务器的资源的利用率,优化服务的稳定性(自动恢复机制),更加精简运维的维护。(如果高并发场景的业务,考虑实现自动化的弹性扩容服务)
数据库运维构建
1. 存储: 数据库采用mysql存储,innodb存储引擎。
2. 读写分离: 采用主从mysql 进行读写分离。
3. 冷备热备: 采用主从mysql 进行热备。
每天进行一次冷备到其他服务器。
磁盘每天进行一次快照存储。
4. 异地备份: 暂无。
5. 故障切换: 因数据一致性要求较严,一般dba手工进行故障恢复。
分布式基础设施搭建
采用开源的基础服务设施, 构建整个分布式技术体系, 从而加快完成分布式基础设施的整体布局,做好主备和故障愈合的预案,从而确保整体基础设施的稳定性。(ps: 假如是大型的,偏向高并发,长远的电商业务,可以综合考虑自研基础服务设施为优先方案)
1. 分布式任务调度平台
技术选型: xxl-job, 用于后台/异步任务等任务的挂载,确保一些耗时/耗资源/定时的任务和api分离,确保前端api的稳定。
2. 分布式服务中心
技术选型: eureka-server, 用于服务的注册,负载均衡,故障转移,健康检测等服务统一管理。
3. 分布式消息队列
技术选型: rocketmq, 用于业务的异步解耦,上下游消息的转发,异构业务的异步通信等。
4. 分布式日志中心
技术选型: elk, 用于应用日志的统一管理,查询,统计等。
5. 分布式文件服务
技术选型: 七牛文件服务, 用于文件的上传,下载,文件生命周期的管理,图片的动态缩放等。
6. CDN
技术选型: 腾讯cdn, 用于图片,脚本,css等文件的cdn网络加速,加快前端资源的下载速度。
7. 分布式配置中心
技术选型: apollo, 用于所有项目的配置分类,抽象,灰度发布等管理。
8. 分库分表中间件
技术选型: sharding-jdbc, 用于对业务开发人员屏蔽数据库的分库分表,主从读写分离的拆分细节。
9. 搜索服务
技术选型: elasticsearch, 用于全文检索,相似度文档(数据)的业务查询。
10. 分布式缓存
技术选型: redis, 用于业务的分布式缓存,从而加快业务的查询速度。
分布式监控体系搭建
1. 调用链监控
技术选型: pinpoint, 用于所有服务的调用关系的监控分析,里面也包含(cpu,内存,耗时)性能等。未来要迁移成skywalking。
2. 日志监控
技术选型: elk, 用于应用日志的统一管理,查询,统计等。
3. 服务器监控
技术选型: zabbix, 用于所有linux服务器系统级别的性能监控。
4. DB监控
技术选型: pmm,用于所有线上mysql数据库的性能监控记录,慢查询等分析。
5. 应用监控(性能分析)
技术选型: cat,用于所有线上顺向和逆向调用链路的分析,数据库和url耗时的性能分析,服务及服务器的性能分析报表,bsf自研监控报表等。
分布式框架自研
基于开源的分布式基础设施和分布式的监控体系,通过自研的bsf框架进行粘合;把复杂的配置和复杂的各个分布式组件之间的协作,通过单一bsf框架进行整合,通过简单的接口对开发者提供标准规范的调用方式;采用类似springcloud的思想,以插件形式对所有的基础服务进行平行扩展,方便开发人员阅读和维护;未来基础服务可以随时升级替换,只需要保持对开发者的接口兼容即可。
愿景: 让开发人员仅关注快速使用,无需了解底层服务实现,让开发变得更简单。
目前已集成插件有:
cat(分布式监控平台),
apollo(分布式配置中心),
elk(分布式日志中心),
eureka(注册中心),
job(分布式任务调度),
message(消息),
mq(消息队列),
shardingjdbc(分库分表),
redis(分布式缓存),
elasticsearch(搜索引擎),
health(bsf健康检查),
file(文件服务)
等。
同时底层框架bsf和业务框架business剥离,让通用的底层框架剥离实际的公共业务类库。
基于bsf和business之上,定义标准的项目脚手架csx-b2b-demo,用于快速构建项目服务。
业务基础服务构建
主数据 提供公用的业务基础配置数据。
用户中心 提供统一用户登陆鉴权。
流程服务 提供流程的设计,表单设计和流程审批功能。
短信服务 提供永辉等第三方短信平台对接等。
报表 提供线上统一报表查询和导入导出等。
技术分享
架构组提供进行11场左右的技术分享,同时业务部门也会举办一些业务培训,让开发人员了解并熟悉底层框架技术原理,日常使用,以及现有产品业务等。
开源社区构建
构建开源技术博客,开源bsf底层技术框架,推进核心技术人员参与技术分享社区和沙龙, 邀请第三方技术人员做一些培训分享。
关于混合云
永辉云 用于内部所有测试开发环境的构建和部分线上服务。
腾讯云/七牛云 用于文件服务,第三方cdn,dns等公共服务。
自建机房 用于搭建所有线上服务,数据库,容器集群,大部分基础服务设施等等。
其他
暂未涉及前端,大数据,机器学习(人工智能),测试平台相关。
2019-12-20
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
国内首家!360 加入 Ecma 参与 JavaScript 语言标准制定
编者按:近日 360 已成为 Ecma 会员,奇舞团将代表公司参与 TC39 的工作,制定 JavaScript 语言标准。关于 JavaScript 的标准提案,大家有任何建议也可以通过我们进行反馈。欢迎大家一起来推动 JavaScript 朝着更强大、更高效、更安全的方向发展。 360加入Ecma参与JavaScript标准制定 2019 年 6 月底,三六零安全科技股份有限公 司(以下简称 360 )成为了国际标准组织 Ecma International 的会员,并加入了负责 JavaScript 语言标准制定的技术委员会 TC39。这是 JavaScript 诞生 20 多年以来首次有中国公司的参与。在随后召开的 TC39 第71次技术会议上,360 技术委员会 Web 前端分会委员贺师俊作为 360 的代表接手了 function.sent 提案的工作。这份提案早已达到第2阶段,但是提案的原负责人退休后,委员会里一直无人愿意接手,提案停滞多年,即将被撤销。这次 360 代表主动承担起该提案的工作,标志着中国已经正式参与到 JavaScript 语言标准的制定中。在 12 月...
- 下一篇
Vue3.0 新特性全面探索 - 基于 Composition Api 快速构建实战项目
本项目综合运用了Vue3.0的新特性。 基于Composition API即Function-based API进行改造,配合Vue Cli,优先体验Vue3特性 使用单例对象模式进行组件通信 使用axios库进行网络请求,weui库实现 UI 界面 # 安装依赖 npm install # 在浏览器打开localhost:8080查看页面,并实时热更新 npm run serve # 发布项目 npm run build 建议配合 Visual Studio Code 和Vue 3 Snippets代码插件 Dependencies 以下是项目运用到的依赖,@vue/composition-api配合vue模块让我们Vue2.0版本可以抢先体验Vue3.0的新特性,axios是辅助我们发送网络请求得到数据的工具库,weui是一套与微信原生视觉一致的基础样式库,方便我们快速搭建项目页面。 "@vue/composition-api": "^0.3.4", "axios": "^0.19.0", "core-js": "^3.4.3", "vue": "^2.6.10",...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8编译安装MySQL8.0.19
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS7安装Docker,走上虚拟化容器引擎之路
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- Mario游戏-低调大师作品
- 2048小游戏-低调大师作品
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2整合Thymeleaf,官方推荐html解决方案