主题:某互联网上市公司基于 Golang 的运维基础框架
目录
-
服务器监控系统
-
自动化部署系统
-
功能展示
-
高可用控制系统的演化
-
高可用调度系统
-
-
资源定位系统
-
整体架构
-
强一致,高可用设计
-
-
一点儿心得
主讲师:PC
-
豆瓣、百度、360、第四范式
-
知乎《面向工资编程》
Overview
监控系统
自动化部署系统
标准化的上线包,流程化的上线系统
-
Function Points
-
面向服务上线
-
一键部署及回滚
-
详细的部署统计信息和历史
-
Window/Linux 全平台支持
控制系统
-
memcached架构的全异步非阻塞多线程模https://github.com/auxten/gko_pool
-
内置特别优化过的内存池实现, https://github.com/auxten/gkoAlloc
-
异步 DNS 查询、DNS over TÇP,cares + libev。从 gevent 学来的。
-
高性能客户端编程:端口扫描、DDoS 攻击……
进化
整体架构
分层原则
在系统实现第一期,只有 Agent 和“分布式控制器”,后续为了支持“定时任务”、“任务依赖”。诞生出了更为上层的“分布式调度器”。这两层系统实现的语言和高可用的考虑都不一样,但还是如下原则:
-
数据、业务逻辑严格分离。所有服务”无状态化”,保证数据一致性和高可用。
-
业务逻辑和数据操作、网络操作代码严格分层实现。
控制系统 v2
长连接推送
Tech Points
-
分布式一致性算法
-
使用 Erlang/OTP 开发,连续四年不间断运行无故障
-
高可用设计、99.999% 高可用保障
-
平台化、插件化
调度
处理复杂任务依赖、调度
Tech Points
-
分布式高可用调度算法
-
任务依赖&定时模型
-
Powered by Golang
-
长连接,HTTP 接口
资源定位
解耦、定位上下游
client
Access Method
Confd——长连接、推送修改配置文件、自定义reload脚本
SOA——主要面向Java,以SDK提供,zookeeper接口形式接入
DNSd——Golang;Glibc Name Service Switch
API——Zookeeper兼容接口,HTTP接口、ProtoBuf接口
sever
Tech Points
-
Raft 分布式一致性算法,强一致性保证,高可用保证,放弃分区容忍性
-
LevelDB 持久化,LSM tree,每次启动时载入
-
Powered by C++,预备用 Golang 重构
心得
具体的参与方式:加小助手微信WeChat : 1902433859 备注“公开课” 进入直播分享群