微服务架构如何实现网站服务垂直化拆分( 二 )


基于此 , 我们消息中间件主要会去解决三大类的问题 。
第一个是可靠同步 , 它的消息是可靠并且有序的 , 这是在所有需要稳定性、提高交易链路上用到的 。第二个是可靠异步 , 当有稳定性的诉求 , 也有吞吐量诉求的时候 , 可以采用异步的这些逻辑 , 通过异步反馈 , 让消息中间件反复去投递 , 确保稳定性 。最后一个是单向 , 不关注稳定性 , 只关注吞吐量是否大 。
大规模配置推送

微服务架构如何实现网站服务垂直化拆分

文章插图
在进行服务化拆分之后 , 需要将每一个服务使用的配置进行集中式管理 。因此 , 我们研发了可靠的配置推送服务 , 能够在毫秒级时间内完成配置推送 , 同时支持变更历史记录和推送轨迹的查询 。
立体化监控
监控是我们非常关注的事情 , 对于系统整体的性能指标也非常重要 , 所以 , 我们会尝试从不同层面收集信息 , 实现对应用立体化的监控 , 包括资源、容器和服务 , 具体包括以下三大方面:
系统资源:负载 , CPU、内存、磁盘、网络
容器:堆内存、类加载、线程池、连接器
服务:响应时间、吞吐率、关键链路分析
服务监控
当原本在集中式的系统架构里面 , 每个页面会贯穿非常多的模块 , 每个模块都耦合在一个系统中 , 最终监控出的是表象 , 无法知道页面打开慢是哪个模块哪个功能逻辑上慢 。现在 , 我们会对每一个服务接口、方法的实时调用情况进行监控 , 能够细致地将每一个服务的生命周期 , 每一个服务运行时的监控指标非常细化的监控出来 , 还会调用QPS、响应时间进行统计 , 同时快速感知系统流量变化 。
淘宝网围绕EDAS技术体系进行了一整套的服务化改造 , 在这个改造过程中 , 首先将数据复用度最高的数据进行拆分 , 剥离出用户中心这样的共享型的服务层 , 对上层所有业务进行用户相关的所有逻辑 , 接下来又陆续有千岛湖项目、五彩石项目 , 这些项目的背后都是一系列的服务化中心拆分出来的产物 , 后来经过6-7年的服务化演进 , 目前服务中心数已达50多个 。
自主创新走出技术困境 , 沉淀一大批成熟中间件技术 , 最底层为共享型中间件和组件 , 以及阿里云沉淀下来的技术支撑型产品;共享服务体系打破应用“烟囱式”建设方式 , 支撑业务快速创新;云化基础架构高效支撑业务增长 , 灵活的弹性伸缩带来巨大的成本节约 。
大规模服务化挑战
随着服务化的拆分 , 所有的系统会变得越来越多 , 箭头指向就是底层的服务化中心 , 上层调用过来就是前端的业务系统 。很多系统调用很多的服务中心 , 这时已经没有架构师能够人为的帮助我们进行服务依赖和架构梳理 。
EDAS鹰眼监控系统
我们在排查一些线上问题的时候 , 其实不要求说能够非常快速智能化的帮我去解决问题 , 只要有这样一套系统能够帮我快速的去定位问题就可以 , 于是阿里内部做了EDAS鹰眼监控这样一个系统 。
微服务架构如何实现网站服务垂直化拆分

文章插图
图中从上至下可以看出 , 鹰眼监控系统能够非常快速的定位故障在哪里 , 并且通过可视化的手段 , 能够在系统上面发现是由于哪台机器上的哪一段日志导致的 。这是鹰眼监控做的第一个事情 。
微服务架构如何实现网站服务垂直化拆分

文章插图
鹰眼监控做的第二个事情是什么呢?当我们把类似的请求调用链路全部汇总起来进行分析后 , 就可以在很短时间内进行数据采集 , 并且有数据化的运营出来 。峰值的QPS是指今天在某一个业务高峰时 , 某一个业务的服务 , 在分钟级别的服务化的调用过程中 , 达到的最大的QPS 。如图中标记可以看出 , 即使页面暴露在最前端 , 但不一定是压力最大的 , 这就算数据可视化带给我们的价值 。我们还要对数据进行决策上的帮助 , 数据最大的价值在于可以精准化的通知我们最大压力点 。


推荐阅读