工欲善其事,必先利其器。找到好工具,先读文档是最好的。
airflow
airflow: 分布式系统任务调度管理系统
对于常规的 crontab 定时任务,需要思考几个问题:
1.分布式系统的情况下,多台机器会不会每台执行一次某个任务?
2.同一台机器上,隔一定时间执行的任务,上次任务未执行完毕,而到了下次任务执行时间,这种情况下会发生什么?
3.如果限制在一台机器上,加锁限定两次任务不会冲突,但这个机器的任务调度服务挂了,会对系统造成什么影响?
所以就应该有一个工具进行调度管理任务,让机器争抢任务,或者由调度中心选择机器,将任务分配给他,加锁,其他机器不在调用或者不在执行这个任务,执行完成解锁,等待下次执行。所以就有了 airflow
,统一管理,配置任务,记录状态等。到时间了竞争执行,哪个节点持有了锁哪个节点执行任务。
更多参考 官方文档
locust
locust:简单易用功能强大,Python实现的压力测试框架
他比ab,jmeter 高级点的地方是支持很多请求方式,因为封装的 request 包,几行代码就可以写一个测试任务。可以同时模拟多用户多请求的方式进行压测,接近真实生产环境。
在模拟有效并发方面,Locust 的优势在于其摒弃了进程和线程,完全基于事件驱动,使用 gevent 提供的非阻塞 IO 和 coroutine 来实现网络层的并发请求,因此即使是单台压力机也能产生数千并发请求数;再加上对分布式运行的支持,理论上来说,Locust能在使用较少压力机的前提下支持极高并发数的测试。
更多参考 官方文档
Zipkin
交少侵入业务的链路追踪系统,不侵入业务的局限性是一些无请求交互性的操作不会被记录到
Zipkin是根据Google Dapper的论文设计的全链路监控系统,由Twitter公司开发。
Zipkin 以 Trace 结构表示对一次请求的追踪,又把每个 Trace 拆分为若干个有依赖关系的 Span。在微服务架构中,一次用户请求可能会由后台若干个服务负责处理,那么每个处理请求的服务就可以理解为一个 Span(可以包括 API 服务,缓存服务,数据库服务以及报表服务等)。当然这个服务也可能继续请求其他的服务,因此 Span 是一个树形结构,以体现服务之间的调用关系。
更多参考 官方文档
Gitea
Gitea 是一个开源社区驱动的轻量级代码托管解决方案,后端采用 Go 编写,采用 MIT 许可证.
现在的 Gitlab 集成了太多东西了,Gitlab 运行需要配置一堆环境的。如果项目无需用到细粒度权限管理,持续集成发布等,在开发机上的那些资源不如给开发使用,而不是安装笨重的 Gitlab, 所以有个 Gitea 这个工具,在内网自己部署,节约资源,至于其他的slack,邮件通知系统,CI 工具等,可以自行配置安装,也可以使用第三方的扩展,能够节省太多的资源了。
(段落写于2019年10月20日,码云突然被停掉域名解析了,代码托管给第三方的真的需要考虑自己搭一个环境了)
更多参考 Gitea官网
more
等我以后接着更