2018第50周日

架构设计是要考虑系统适用的并发量,并根据并发量做相应的设计处理,还要考虑到超出预期的处理方式,比如要做服务限流处理,当流量超出预期时要保证系统在预期的流量内做正常的运行,而将多余的流量过滤掉或者队列存储延迟处理,或者牺牲一部分服务来提高核心服务的流量。同时要对异常流量做分析处理,如果是双十一这样的场景就用云计算弹性扩容的方式,如果是异常流量请求攻击,则尽量屏蔽掉对应地址的请求来源。

Spring Could常用的限流组件是Hystrix,但已停止新版本维护更新,官方建议用Resilience4j代替,当然如果现在Hystrix的功能已完全应对你现有的需求甚至将来的业务发展的需求,那就用它现有的版本就好了。

微信后台有2万多台机器运行着3000多个服务,主要分为Entry leap服务接受外部的请求,Shared Leap中间层编排服务和基本服务。每日峰值请求率是平均值的3倍,春节则是日常均值的10倍,它对过载控制系统有很大的挑战。

单台服务器能处理的请求很容易达到极限,业务发展必须要提前考虑集群负载均衡,将请求、数据均匀的分摊到多个操作单元上执行,

  • 反向代理层的负载均衡,是通过“DNS轮询”实现的

  • 站点层的负载均衡,是通过“nginx”实现的

  • 服务层的负载均衡,是通过“服务连接池”实现的

  • 数据层的负载均衡,要考虑“数据的均衡”与“请求的均衡”两个点,常见的方式有“按照范围水平切分”与“hash水平切分”

Raft协议是常用的解决分布式一致性问题的协议,想consul等注册中心都是基于它实现,而它的发明人John是斯坦福大学的教授,曾在Google做了一次软件设计哲学的演讲,他问了“什么是计算机科学里最重要的事情”的问题,有人回答抽象,有人说是抽象层次,有人说是复杂性,而John认为是问题分解(Problem Decomposition)。

从看上去正常的业务系统中发现问题是非常能体现出经验差距的,这需要对技术、业务的足够敏锐和强大的目标感。要先职场快速发展,就要尽早建立自己的目标感,然后基于目标感来不断打磨敏锐度,不断提升自己对技术、产品、业务和数据的认知,而不要纠结具体技术岗位、开发工具、技术选型的差异,从长远看这点差异根本构不成职场的经验优势。

原文地址:https://www.cnblogs.com/doit8791/p/10126467.html