为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

课程章节:5-5

课程讲师少林码僧

课程内容

  • 服务隔离的目的

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

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

  • 进程之间的通信方式

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

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

  • 资源隔离

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

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

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

  • 快慢隔离

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

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

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

  • 热点隔离

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

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

  • CAP理论

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

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

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

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

  • 对热点数据的处理

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

    • 提前预热缓存

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

  • 业务核心度隔离

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

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

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

  • 读写分离

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

  • 动静分离表分离

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

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

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

  • 动静分离CDN

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

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

  • 应用隔离

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

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

  • 物理隔离

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

    • 比如 异地多活的设计

课程收获:

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



点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消