规模化微服务拥抱故障
非功能需求
响应时间/延迟
可用性
数据持久性
功能降级对于每个使用多个微服务的面向用户的界面,或每个依赖多个下游合作者的微服务来说,你都需要问自己:“如果这个微服务宕掉会发生什么?”然后你就知道该做什么了。
架构性安全措施正确地设置超时,实现舱壁隔离不同的连接池,并实现一个断路器 ,以便在第一时间避免给一个不健康的系统发送调用。
反脆弱的组织混乱猴子(Chaos M...
Continue reading
分布式架构分布式的特点分布式系统是一个硬件或软件组件分布在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信和协调的系统。
分布性
对等性
并发性
缺乏全局时钟
故障总是会发生
分布式环境的各种问题
通信异常
单机内存访问的延时在纳秒数量级(通常是10ns左右),而正常的一次网络通信的延迟在0.1〜1ms左右(相当于内存访问延时的105〜106倍)
网络分区
当网络由于发生异...
Continue reading
Continue reading
ZooKeeper的典型应用场景ZooKeeper是一个典型的发布/订阅模式的分布式数据管理与协调框架,开发人员可以使用它来进行分布式数据的发布与订阅。另一方面,通过对ZooKeeper中丰富的数据节点类型进行交叉使用,配合Watcher事件通知机制,可以非常方便地构建一系列分布式应用中都会涉及的核心功能,如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master选举、分布式锁...
Continue reading
Continue reading
一致性协议为了解决分布式一致性问题,在长期的探索研究过程中,涌现出了一大批经典的一致性协议和算法,其中最著名的就是二阶段提交协议、三阶段提交协议和Paxos算法了。
2PC (Two-Phase Commit)二阶段提交协议是将事务的提交过程分成了两个阶段来进行处理
优点:原理简单,实现方便。
缺点:同步阻塞、单点问题、脑裂、太过保守。
同步阻塞
二阶段提交协议存在的最明显也是最大的一个问...
Continue reading
Continue reading
微服务领域驱动设计 : 用代码呈现真实世界的重要性,并且告诉我们如何更好地进行建模
持续交付理论 : 告诉我们如何更有效及更高效地发布软件产品,并指出保持每次提交均可发布的重要性
六边形架构理论 :
参考:http://www.cnblogs.com/Leo_wl/p/4418663.html
什么是微服务微服务就是一些协同工作的小而自治的服务。
服务应该多小
微服务将单一职责原则应用在独立的...
Continue reading
Continue reading
通信框架关键技术点分析长连接还是短连接绝大多数的分布式服务框架(RPC框架)都推荐使用长连接进行内部通信,为什么选择长连接而不是短连接呢?
相比于短连接,长连接更节省资源
远程通信是常态,调用时延是关键指标
功能设计可靠性设计链路有效性检测心跳检测机制分为三个层面:
TCP层面的心跳检测,即TCP的FCeep-Alive机制,它的作用域是整个TCP协议栈。
协议层的心跳检测,主要存在于...
Continue reading
Continue reading
康威定律和系统设计康威定律 任何组织在设计一套系统(广义概念上的系统)时,所交付的设计方案在结构上都与该组织的沟通结构保持一致。
松耦合组织和紧耦合组织紧耦合组织的一个例子是商业产品公司,他们的员工都在一起工作,并有着一致的愿景和目标;而松耦合组织的典型代表是分布式开源社区。
组织的耦合度越低,其创建的系统的模块化就越好,耦合也越低;组织的耦合度越高,其创建的系统的模块化也越差。
服务所有权服务所...
Continue reading
Continue reading
总结微服务的原则
围绕业务概念建模
使用限界上下文来定义可能的领域边界。
接受自动化文化
自动化测试必不可少,因为相比单块系统,确保我们大量的服务能正常工作是一个更复杂的过程。调用一个统一的命令行,以相同的方式把系统部署到各个环境是一个很有用的实践,这也是采用持续交付对每次提交后的产品质量进行快速反馈的一个关键部分。
隐藏内部实现细节
选择与技术无关的API
让一切都去中心化
确保...
Continue reading
Continue reading
ZooKeeper与PaxosZooKeeper介绍ZooKeeper并没有直接采用Paxos算法,而是采用了一种被称为ZAB(ZooKeeper Atomic Broadcast)的一致性协议。
ZooKeeper是一个典型的分布式数据一致性的解决方案,分布式应用程序可以基于它实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master选举、分布式锁和分布式队列等功能。Z...
Continue reading
Continue reading
演化式架构师不准确的比较架构师的一个重要职责是,确保团队有共同的技术愿景,以帮助我们向客户交付他们想要的系统。在某些场景下,架构师只需要和一个团队一起工作,这时他们等同于技术引领者。在其他情况下,他们要对整个项目的技术愿景负责,通常需要协调多个团队之间,甚至是整个组织内的工作。
软件并没有类似这种真正的工程师和建筑师在物理规则方面的约束,事实上,我们要创造的东西从设计上来说就是要足够灵活,有很好的...
Continue reading
Continue reading