- Java锁的逻辑(结合对象头和ObjectMonitor)
- 还在用饼状图?来瞧瞧这些炫酷的百分比可视化新图形(附代码实现)⛵
- 自动注册实体类到EntityFrameworkCore上下文,并适配ABP及ABPVNext
- 基于Sklearn机器学习代码实战
为什么要有双机房?
可能有几个考虑:
容灾:强如阿里云、微信、唯品会等,依然避免不了机房故障问题。一次这个级别的故障,就会有一个技术头头下野.
更快的响应:网络时延和物理距离成正比,用户距离服务越近,时延越友好 。不同的地域,多机房多活模式,就近提供服务.
完备的服务包括哪些?
应用服务实例,缓存服务实例、数据库服务实例、mq 服务实例等.
服务实例数量可以根据实际需要确定,不必要求安全对等,但是比例不能乱.
数据的同步是至关重要的。数据是业务逻辑的承载和服务状态的基础.
数据同步强调准确性和实时性。 两个机房的数据根据不同的活性模式,数据域可能略有差异,但是相同的数据域必须要保障一致性.
这里说的服务调用是指内部服务之间的访问需求,就近是指访问限定在机房域内,尽量避免跨机房调用.
服务调用主要分如下几个点:
http 方式简洁,易用,是服务间交互的常用方式,通常使用内部域名(避免直接ip访问)访问.
双机房建设,则需要做好相应的适配.
rpc 方式则更侧重扩展性,可靠性,高效性等。通常有相应的服务框架及管理框架支持.
rpc 服务提供者和使用者通过服务注册中心进行服务注册发现交互.
双机房注册及发现,需要有相应的【就近策略】支持.
mq 异步交互模式.
业务消息限制发送到同一机房,并由同一机房服务进行消费.
灾备模式,即机房服务作为备用,不参与对外服务。一旦主机房发生故障,快速切换响应.
这种建设模式因为变更来源全部为主机房单向数据同步,所以比较容易实现.
灾备模式需要做什么?
灾备模式数据同步实时性要求没有那么高。更强调数据的最终一致性.
备机房服务节点可以直接作为备节点模式进行数据的同步.
双活模式,即两个机房同时对外提供服务,同时对底层数据产生变更操作.
这种涉及的逻辑比较复杂,要求也相对较高,强要求数据同步实时性.
双活模式需要做什么?
所谓用户切割即,划分两个机房服务不同的用户群体。尽量使得同一个用户的数据变更都发生在同一个机房.
切割通常可以从网关层面进行流量调度.
调度策略可以基于用户属性层面考量,比如:地域、ID特性等.
数据双向同步,听着就麻烦,所以必须有 a)中的用户切割作为基础.
对于可能产生的同一数据的双相同步场景(数据冲突等),处理尤要慎重(基于时间戳、外部验证等前置验证方式).
最后此篇关于浅谈双机房的那些事的文章就讲到这里了,如果你想了解更多关于浅谈双机房的那些事的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我是一名优秀的程序员,十分优秀!