• 了解什么是微服务,微服务的应用场景


    了解什么是微服务

    参考:https://www.cnblogs.com/skabyy/p/11396571.html

    一)、原有单体服务的弊端

    场景演示:

    需求:小明和小皮一起创业做网上超市 的故事

    功能:

    网站

    • 用户注册、登录功能
    • 商品展示
    • 下单

    管理后台

    • 用户管理
    • 商品管理
    • 订单管理

    二)、业务拓展:

    1. 网站系统增加促销活动功能
    2. 增加移动设备:微信小程序,移动App(移动设备的功能和网站的功能相同),
    3. 在后台系统添加促销管理和数据分析
    4. 四个系统共用一个数据库

    业务扩展后架构出现的弊端;

    1.网站和移动端应用有很多相同业务逻辑的重复代码

    2.数据有时候通过数据库共享,有时候通过接口调用传输。接口调用关系杂乱

    3.数据库表结构被多个应用依赖,无法重构和优化

    4.所有应用都在一个数据库上操作,数据库性能急剧下降

    5.开发、测试、部署、维护愈发困难, 即使只改动一个小功能,也需要整个应用一起发布 ,

    三)、微服务的特点:

    抽象:抽象出公用的业务能力,做成几个公共服务

    解决了各应用间数据库的共用问题:一个服务对应一个数据库

    数据库拆分产生的问题和挑战 :跨库级联的需求

    四)、日志排查

    原有单体系统的日志排查:查看日志,研究错误信息和调用堆栈

    在微服务架构中,一个服务故障可能会产生雪崩效用,导致整个系统故障

    五)、微服务的弊端

    1.微服务架构整个应用分散成多个服务,定位故障点非常困难

    2.稳定性下降,一个服务出现故障 ,可能导致整个系统挂掉

    3.服务数量非常多,部署、管理的工作量很大

    4.如何保证各个服务在持续开发的情况下仍然保持协同合作

    5.原本单个程序的测试变为服务间调用的测试。测试变得更加复杂

    六)、如何进行故障处理:

    减少错误:事前监控,事后分析

    降低影响:容错,服务降级

    建立完善的监控体系

    微服务架构中组件繁多 ,各个组件所需要监控的指标不同 ,做一个大而全的监控系统来监控各个组件是不大现实的

    例如:Redis缓存监控的指标有占用内存值 ,网络流量 ,数据库监控连接数 ,磁盘空间 ,业务服务监控并发数,响应延迟、错误率等

    如何实现监控:

    1.各个组件提供报告自己当前状态的接口(metrics接口)

    2.接口输出的数据格式一致

    3.部署一个指标采集器组件,定时从这些接口获取并保持组件状态,提供查询服务

    4.需要一个UI ,从指标采集器查询各项指标 ,绘制监控界面 或 根据阈值发出告警。

    例如:Redis缓存和MySQL数据库的指标接口:RedisExporter和MySQLExporter (网上有开源组件)

    使用采用Prometheus作为指标采集器

    六)、链路跟踪

    什么叫链路跟踪?

    一个用户的请求往往涉及多个内部服务调用

    链路跟踪 :记录每个用户请求 ,记录微服务内部产生了多少服务调用,及其调用关系

    实现链路跟踪:

    1)、服务调用要在HTTP的HEADERS中记录至少四项数据

    1.traceId :标识一个用户请求的调用链路,具有相同traceId的调用属于同一条链路

    2.spanId :标识一次服务调用的id

    3.parentId : 父节点的spanId

    4.requestTime & responseTime : 请求时间和响应时间

    2)、调用日志收集与存储的组件,以及展示链路调用的UI组件

    链路跟踪的实现过程:

    使用HTTP请求的拦截器,在每次HTTP请求时生成这些数据注入到HEADERS,同时异步发送调用日志到Zipkin的日志收集器中

    链路跟踪只能定位到哪个服务出现问题 ,查找具体的错误信息的能力则需要由日志分析组件来提供

    日志分析

    ELK(Elasticsearch、Logstash和Kibana )日志分析组件:

    Elasticsearch:搜索引擎,同时也是日志的存储

    Logstash:日志采集器,它接收日志输入,对日志进行一些预处理,然后输出到Elasticsearch

    Kibana:UI组件,通过Elasticsearch的API查找数据并展示给用户

    日志分析过程:

    日志输出到文件------》每个服务里再部署个Agent,扫描日志文件 -------》输出给logstash

    金麟岂能忍一世平凡 飞上了青天 天下还依然
  • 相关阅读:
    Flask 入门(五)
    Mac 系统root
    Flask 入门(四)
    Flask 入门(三)
    Flask 入门(二)
    Flask 入门(一)(Mac 系统)
    linux升级python2.7到3.7.0
    [20170825]11G备库启用DRCP连接3.txt
    [20170824]11G备库启用DRCP连接.txt
    [20170728]oracle保留字.txt
  • 原文地址:https://www.cnblogs.com/Auge/p/11609613.html
Copyright © 2020-2023  润新知