一、微服务拆分原则
1.按照业务划分,DDD的业务分析,识别核心领域以及api和工具。
2.职责单一原则。每个服务尽量只做一件事情。
3.性能压力比较大功能的服务独立拆分。
4.频繁改动的业务功能独立拆分,尽量减少影响范围。
5.高内聚,低耦合,尽量不要访问其它服务的数据库表。通过API调用。
二、微服务监控
采集->存储->可视化->告警
-
采集: 通过
Prometheus采集服务指标,如果服务器的指标,则在该机器部署Prometheus的服务,则能被采集数 据。如果是业务数据,比如想采集某个队列的积压的任务,则需要开发一个exporter 这样的数据,提供一个接口,让 Prometheus定时能拉取队列积压的数量。然后再有Prometheus配置告警,或者让k8s自动扩容。 -
数据存储 Prometheus 通过
tsdb存储数据,SkyWalking存链路数据。 -
可视化
grafana对接Prometheus,展示监控面板。 SkyWalking 的ui查看链路数据,查看调用耗时。 -
告警 prometheus配置告警规则,比如错误率高于5%,或者调用耗时超过1s
三、微服务日志收集
日志收集的解决方案是ELK,日志输出->采集->存储->查询。
1.日志输出: 统一格式输入,比如json, 包含服务名,时间,traceid,等等关键信息。
2.采用Filebeat采集日志,发送到Elasticsearch。
3.采用Elasticsearch存储日志,支持全文检索,或者用traceid作为字段过滤。
4.用kibana对接Elasticsearch,可视化查询日志。比如订单id=123