微服务架构思想
微服务架构优点
1、易于开发和维护:一个微服务只会关注一个特定的业务功能。所以它业务清晰。代码量较少。开发和维护
单个微服务相对简单。而整个应用是由若干个微服务构建而成的。
2、单个微服务启动较快:单个微服务代码量较少,所以启动比较快。
3、局部修改容易部署:单体应用只要有修改,就得重新部署整个应,微服务解决了该问题。如果想对某个微
服务进行修改,只需要重新部署这个服务即可。
4、技术栈不受限:可以结合项目业务和团队的特点,合理地选择技术。
5、按需伸缩:可根据需求,实现细粒度的扩展。
微服务架构的挑战
运维要求较高:
部署问题:更多的服务意味着更多的运维投入。
分布式固有的复杂性:
使用微服务构建的是分布式系统。对于一个分布式系统来说问题:
1、分布式日志
2、分布式事务
3、分布式Session
4、系统容错
5、网络延迟
微服务自动化部署
Nexus+Jenkins+Git|Gitee|Gitlab+Docker+K8s
1、私有仓库搭建 Nexus
2、持续集成 Jenkins+Maven
3、灰度发布
微服务日志收集与性能监控
1、日志收集工作 日志输出----日志收集-----日志分析 -----ELK
2、性能监控-----Zabbix
3、链路追踪-----sleuth+Zipkin
通过Sleuth可以很清楚的了解到一个服务请求经过了哪些服务,每个服务处理花费了多长。从而让我们可以很方便的理清各微服务间的调用关系。
zipkin是一种分布式的跟踪系统,由Twitter公司开源,它致力于收集服务的定时数据,以解决微服务架构中的延迟问题,包括数据的收集、存储、查找和展现。
微服务自动化测试与质量管理
SonarQube
整体架构
前面给我们项目的微服务应用都加上监控告警。Spring Boot Actuator的引入只是第一步
- 如何集成监控告警系统Prometheus和图形化界面Grafana
- 如何自定义监控指标,做应用监控埋点 Prometheus
- 如何集成Alertmanager 进行告警
数据收集器,它以配置的时间间隔定期通过HTTP提取指标数据。
一个时间序列数据库,用于存储所有指标数据。
一个简单的用户界面,您可以在其中可视化,查询和监视所有指标。