Java教程

【金秋打卡】第11天 构建微服务设计架构知识体系--微服务可用性之服务隔离

本文主要是介绍【金秋打卡】第11天 构建微服务设计架构知识体系--微服务可用性之服务隔离,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

课程名称:海量数据高并发场景,构建Go+ES8企业级搜索微服务

课程章节:5-5

课程讲师:少林码僧

课程内容

  • 服务隔离的目的

    • 在系统发生故障的时候限制其影响范围

    • 隔离在保障整个服务的可用性上具有重要作用

  • 进程之间的通信方式

    • 在不同的机器上需经过远程调用,比如RESTFul API,gRpc 等通信方式

    • 如果是在同一台机器上,可以通过共享内存,线程管道,系统提供的的“收发消息”,系统信号

  • 资源隔离

    • 通过限制docker对资源的使用上限

    • 将物理机分成多个虚拟机

    • 如果消耗资源很大,可以尝试把消耗资源的服务部署到单独的机器或者集群

  • 快慢隔离

    • 避免整个队列被重任务阻塞

    • 比如视频处理,视频审核,需要大规模分析的任务

    • 比如error级别日志和非error级别日志分开采集处理

  • 热点隔离

    • 热点操作:读操作,写操作

    • 热点数据:静态热点(能提前预测的,可以冷启动的),动态热点(不能提前预测)。

  • CAP理论

    • https://img1.sycdn.imooc.com/63634eb00001388e16580834.jpg

    • 一致性指的是读操作保证能够返回最新的写操作结果,多个节点的情况下,无论读哪一个节点,都能读到任一节点最新的写操作

    • 可用性指的是非故障节点在合理的时间内返回合理的响应

    • 当出现网络分区后,系统能继续发挥作用

  • 对热点数据的处理

    • 实现动态发现热点的功能

    • 提前预热缓存

    • 隔离、使用单独的服务来处理

  • 业务核心度隔离

    • 按照服务的核心成都,将服务分级:比如账号服务,不要把账号服务和其他服务放在一起,公用一个库

    • 重要程度高的服务使用单独资源,并提供冗余资源来提高容灾能力

    • 非核心应用,如为了省资源,可以部署到同一个集群

  • 读写分离

    https://img3.sycdn.imooc.com/636352630001b1b506880928.jpg

  • 动静分离表分离

    • 对表字段进行动静分离提高查询性能

    • 尽可能让主表中存储更新频率低的字段,避免缓存页失效。但实际上,mysql8 以后都不用缓存了,但是mysql本身还是需要依赖内存进行update,undolog和redolog都是在内存中操作的。

    • 以短视频为例,视频基本信息一旦生成基本不会变动,但是播放量,点赞点才都是频繁变更的,这部分就要数据进行分离

  • 动静分离CDN

    • 静态资源可以通过CDN来加速

    • 静态资源要单独域名,cname映射到CDN服务厂商提供的DNS服务器

  • 应用隔离

    • 将系统划分为若干个服务模块,各个模块之间是相对独立的,这就是解耦

    • 微服务就是一个应用隔离的方式

  • 物理隔离

    • 服务器,机房,集群等维度的隔离

    • 比如 异地多活的设计

课程收获:

https://img2.sycdn.imooc.com/636353c6000151e017101041.jpg



这篇关于【金秋打卡】第11天 构建微服务设计架构知识体系--微服务可用性之服务隔离的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!