高并发设计系列-分布式篇

简介: 高并发设计系列-分布式篇

天下之事常成于困约,而败于奢靡。——陆游


1 十万qps要做服务拆分吗



qps不是衡量服务化拆分的关键因素,其实有很多的因素让我们不得不做服务拆分,比如一体化架构带来的研发效率降低和研发成本提升,而且系统越来越臃肿,部署成本越来越高,在资源出现扩展性的时候力不从心等等因素让我们必须且立刻做出选择,微服务正式诞生。


2 微服务架构如何改造



  1. 找出依赖和被依赖的模块
  2. 被依赖模块形成微服务对外提供服务
  3. 将依赖服务分为核心和非核心功能模块
  4. 核心与非核心服务可以通过队列通信
  5. 服务之间也可以通过RPC通信
  6. 增加链路监控
  7. 增加服务治理(服务网格service mesh)


3 高并发RPC服务之间通信



  1. 选择一个高性能网络IO模型(epoll)
  2. 调试网络接口参数
  3. 采用protobuf或者thrift序列化协议 比json和xml高效,而且后者也提供rpc框架,前者需要配合grpc实现。


4 分布式服务注册与发现



  1. 注册中心可以帮助我们在动态扩容或者故障恢复以及服务优雅关闭问题方面提供动态地变更RPC服务的节点信息
  2. 心跳机制探测服务存活
  3. 保护服务过度摘除


5 负载均衡提供横向扩展



  1. nginx动态或者静态策略+nginx_upstream_check_module对后端服务定期探测存活
  2. lvs 大流量可以考虑引入


6 API网关



代替web层做一些协议转换、安全策略、认证、限流、熔断,降级等功能。使用多路I/O复用模型和线程池技术来提升网关性能,使用责任链模式来提升网关的扩展性。API网关中的线程池可以针对不同的接口或者服务做隔离和保护,这样可以提升网关的可用性。


7 引入服务网格



业界已有的Istio就很优秀,大家直接拿来用,Istio 采用一种一致的方式来保护、连接和监控微服务,降低了管理微服务部署的复杂性。


8 关注公众号



微信公众号:堆栈future

相关文章
|
8月前
|
架构师
架构系列——架构师必备基础:并发、并行与多线程关系
架构系列——架构师必备基础:并发、并行与多线程关系
|
8月前
|
缓存 安全 算法
多线程、分布式、高并发都不懂?你拿什么跳槽?
多线程、分布式、高并发都不懂?你拿什么跳槽? Synchronized 相关问题 问题一:Synchronized 用过吗,其原理是什么? 问题二:你刚才提到获取对象的锁,这个“锁”到底是什么?如何确定对象的锁? 问题三:什么是可重入性,为什么说 Synchronized 是可重入锁? 问题四:JVM 对 Java 的原生锁做了哪些优化? 问题五:为什么说 Synchronized 是非公平锁? 问题六:什么是锁消除和锁粗化? 问题七:为什么说 Synchronized 是一个悲观锁?乐观锁的实现原理又是什么?什么是
|
7月前
|
消息中间件 算法 NoSQL
硬核!万字神文精解高并发高可用系统实战,分布式系统一致性文档
本文专注于分布式系统的一致性,从实例、算法、原理多方面深入浅出地讲解其中的奥妙。架构的终极奥义正是化繁为简,非精深者不能为之。 对于有志于钻研技术架构、扩展行业视野的同道中人,相信本文会带给你很多思考和成长。比如:
|
9月前
|
存储 分布式计算 运维
大白话讲讲分布式存储系统的架构设计以及容错架构
分布式存储系统的架构设计旨在实现数据的分布式存储和负载均衡,通常采用数据分片和多节点存储的方式。容错架构则是为了提高系统的鲁棒性和可用性。在分布式存储系统中,容错架构常采用数据的冗余备份来应对节点故障或网络异常问题。通过复制数据到多个节点,即使某个节点发生故障,系统仍可以提供数据的可靠访问。此外,容错架构还包括故障检测和自动故障转移机制,用于及时检测节点故障,并将故障节点的任务转移给其他正常节点。这样可以保证系统在故障情况下仍能正常运行,并提供不间断的数据访问。通过合理的架构设计和有效的容错机制,分布式存储系统可以实现高可用性和数据可靠性,满足大规模数据存储和访问的需求。
570 0
大白话讲讲分布式存储系统的架构设计以及容错架构
高性能无锁并发框架Disruptor,太强了
Disruptor是一个开源框架,研发的初衷是为了解决高并发下队列锁的问题,最早由LMAX提出并使用,能够在无锁的情况下实现队列的并发操作,并号称能够在一个线程里每秒处理6百万笔订单
|
存储 缓存 Kubernetes
实战并发-使用分布式缓存和有限状态机
实战并发-使用分布式缓存和有限状态机
实战并发-使用分布式缓存和有限状态机
|
缓存 安全 算法
高性能无锁并发框架Disruptor,太强了!
Disruptor是一个开源框架,研发的初衷是为了解决高并发下队列锁的问题,最早由LMAX提出并使用,能够在无锁的情况下实现队列的并发操作,并号称能够在一个线程里每秒处理6百万笔订单官网:lmax-exchange.github.io/disruptor/目前,包括Apache Storm、Camel、Log4j2在内的很多知名项目都应用了Disruptor以获取高性能为什么会产生Disruptor框架「目前Java内置队列保证线程安全的方式:」ArrayBlockingQueue:基于数组形式的队列,通过加锁的方式,来保证多线程情况下数据的安全;LinkedBlockingQue基于链表形式
|
机器学习/深度学习 监控 安全
单点服务器的 7 种并发模型
模型一:单线程 Accept(无 IO 复用) 模型二:单线程 Accept + 多线程读写业务(无 IO 复用) 模型三:单线程多路 IO 复用 模型四:单线程多路 IO 复用 + 多线程业务工作池 模型五:单线程多路 IO 复用 + 多线程多路 IO 复用(线程池) 模型五(进程版)单进程多路 IO 复用 + 多进程多路 IO 复用(进程池) 模型六:单线程多路 IO 复用 + 多线程多路 IO 复用 + 多线程
289 0
单点服务器的 7 种并发模型
|
缓存
怎么理解分布式、高并发、多线程?
是不是很多人都认为分布式=高并发=多线程?
907 0