数据同步

EMQ 边缘消息服务器管理套件 EMQ X Storm 发布

﹥>﹥吖頭↗ 提交于 2019-11-28 07:56:58
继 2019 年 1 月 25 日 EMQ 首款边缘计算产品 EMQ X Edge (EMQ X 边缘消息服务器)发布之后,4 月 19 日 EMQ 发布了一个与 EMQ X Edge 协同工作的新产品 EMQ X Storm。该产品旨在打造一个便捷、高效、稳定的集中式云端管理套件。这是 EMQ 拥抱 5G 时代 IoT 与边缘计算的又一力作。 EMQ X Storm 是一个适用于 EMQ X Edge 边缘消息服务器的管理套件,产品在设计之初重点关注了以下问题: Edge 边缘消息服务器实际部署数量较多、位置分散且服务器硬件性能相对较弱,部署环境相对复杂,难以开展运维管理工作,如获取监控服务器状态与运行指标、变更相关功能配置、固件升级等; 边缘节点上的设备接入与接入认证、消息数据处理、数据透传等计算规则可能需要随着业务运营进行变更,需要一个集中管理工具实现计算规则的编辑、版本控制、下发等操作。 EMQ X Storm 将边缘节点的监控管理中心化,通过 Web 界面及管理监控 REST API 支撑以上需求。 功能特性 EMQ X Storm 当前处于 beta 测试版本,已经实现的功能如下: Edge 服务器管理:注册绑定式接入管理,部署、接入的服务器,以及状态等信息一目了然; Edge 服务器监控:查看 Edge 边缘消息服务器上的设备接入信息,包括服务器运行状态、连接列表

【收藏】数据库大型应用解决方案总结

无人久伴 提交于 2019-11-27 11:21:00
随着互联网应用的广泛普及,海量数据的存储和访问成为了系统设计的瓶颈问题。对于一个大型的互联网应用,每天百万级甚至上亿的PV无疑对数据库造成了相当高的负载。对于系统的稳定性和扩展性造成了极大的问题。 一、负载均衡技术 负载均衡集群是由一组相互独立的计算机系统构成,通过常规网络或专用网络进行连接,由路由器衔接在一起,各节点相互协作、共同负载、均衡压力,对客户端来说,整个群集可以视为一台具有超高性能的独立服务器。 1、实现原理 实现数据库的负载均衡技术,首先要有一个可以控制连接数据库的控制端。在这里,它截断了数据库和程序的直接连接,由所有的程序来访问这个中间层,然后再由中间层来访问数据库。这样,我们就可以具体控制访问某个数据库了,然后还可以根据数据库的当前负载采取有效的均衡策略,来调整每次连接到哪个数据库。 2、实现多据库数据同步 对于负载均衡,最重要的就是所有服务器的数据都是实时同步的。这是一个集群所必需的,因为,如果数不据实时、不同步,那么用户从一台服务器读出的数据,就有别于从另一台服务器读出的数据,这是不能允许的。所以必须实现数据库的数据同步。这样,在查询的时候就可以有多个资源,实现均衡。比较常用的方法是Moebius for SQL Server集群,Moebius for SQL Server集群采用将核心程序驻留在每个机器的数据库中的办法,这个核心程序称为Moebius

阿里巴巴_java后端面经

こ雲淡風輕ζ 提交于 2019-11-26 15:52:50
自我介绍不多说! 1 多线程有什么用? ( 发挥多核CPU的优势 防止阻塞 便于建模 ) 2 怎么检测一个线程是否持有对象监视器 ( Thread类提供了一个holdsLock(Object obj)方法, 当且仅当对象obj的监视器被某条线程持有的时候才会返回true, 注意这是一个static方法,这意味着“某条线程”指的是当前线程。 ) 3 synchronized和ReentrantLock的区别 ( ReentrantLock可以对获取锁的等待时间进行设置,这样就避免了死锁 ReentrantLock可以获取各种锁的信息 ReentrantLock可以灵活地实现多路通知 ) 4 volatile 关键字的作用 (保证线程对内存的可见性,但是不能保证原子性 ) 5 什么是乐观锁和悲观锁 (乐观锁: 就像他的名字一样,对事情总保持一颗乐观的心, 他认为竞争不总是发生的,因此不需要总持有锁, 用比较替换尝试去修改内存中的值。悲观锁:对安全问题持悲观的状态认为竞争总是会发生的, 对资源进行操作时,总是部分青红皂白直接上锁 ) 6 用java编写一个会导致死锁的程序 7 什么是自旋锁 ( 自旋锁,是指尝试获取锁的线程不会阻塞, 而是循环的方式不断尝试,这样的好处是减少线程的上下文切换带来的开锁, 提高性能,缺点是循环会消耗CPU。 ) 8 什么是java内存模型 ( Java

高德服务单元化方案和架构实践

ⅰ亾dé卋堺 提交于 2019-11-26 03:55:32
导读:本文主要介绍了高德在服务单元化建设方面的一些实践经验,服务单元化建设面临很多共性问题,如请求路由、单元封闭、数据同步,有的有成熟方案可以借鉴和使用,但不同公司的业务不尽相同,要尽可能的结合业务特点,做相应的设计和处理。 一、为什么要做单元化 单机房资源瓶颈 随着业务体量和服务用户群体的增长,单机房或同城双机房无法支持服务的持续扩容。 服务异地容灾 异地容灾已经成为核心服务的标配,有的服务虽然进行了多地多机房部署,但数据还是只在中心机房,实现真正意义上的异地多活,就需要对服务进行单元化改造。 二、高德单元化的特点 在做高德单元化项目时,我们首先要考虑的是结合高德的业务特点,看高德的单元化有什么不一样的诉求,这样就清楚哪些经验和方案是可以直接拿来用的,哪些又是需要我们去解决的。 高德业务和传统的在线交易业务还是不太一样,高德为用户提供以导航为代表的出行服务,很多业务场景对服务的RT要求会很高,所以在做单元化方案时,尽可能减少对整体服务RT的影响就是我们需要重点考虑的问题,尽量做到数据离用户近一些。转换到单元化技术层面需要解决两个问题: 1.用户设备的单元接入需要尽可能的做到就近接入,用户真实地理位置接近哪个单元就接入哪个单元,如华北用户接入到张北,华南接入到深圳。 2.用户的单元划分最好能与就近接入的单元保持一致,减少单元间的跨单元路由。如用户请求从深圳进来

Redis跨机房双向同步实践

有些话、适合烂在心里 提交于 2019-11-25 20:01:14
关键词:Rotter,Redis,多活,跨机房,同步 一、项目介绍 Rotter是禧云自主研发的跨机房Redis双向同步解决方案(下文简称为方案),具有零侵入、高吞吐量、低延时、高堆积能力等特点。当前版本支持Sentinel模式和单点模式Redis架构。从2019年Q2上线至今,服务于三个独立业务线,线上运行稳定,同步延时基本在50ms以内。 1.1 系统架构 整个Redis跨机房双向同步系统分为三层: 控制台Manager 节点发现和数据传输层(ZK+Redis) 数据同步层Rotter 系统架构如图1-1 其中, Manager负责任务配置、数据展示、监控报警等,各机房独立部署; ZK为跨机房集群,A机房为Leader节点,B机房为Follow节点。ZK在方案中负责Rotter节点的注册发现和任务调度。 多活Redis在方案中扮演数据队列的角色,降低了Manager和Rotter节点之间的耦合度。 Rotter是Redis同步任务的执行者,包含replicator和sync两个角色。 replicator是国人开源的基于java语言的redis主从协议实现者redis-replicator,负责解析redis节点指令。 sync负责redis指令跨机房写入,处理同步回环,同步指令监控等。 1.2 同步流程 Rotter中采用链式处理同步数据,任何一个Filter返回失败

Redis跨机房双向同步实践

淺唱寂寞╮ 提交于 2019-11-25 19:57:45
关键词:Rotter,Redis,多活,跨机房,同步 一、项目介绍 Rotter是禧云自主研发的跨机房Redis双向同步解决方案(下文简称为方案),具有零侵入、高吞吐量、低延时、高堆积能力等特点。当前版本支持Sentinel模式和单点模式Redis架构。从2019年Q2上线至今,服务于三个独立业务线,线上运行稳定,同步延时基本在50ms以内。 1.1 系统架构 整个Redis跨机房双向同步系统分为三层: 控制台Manager 节点发现和数据传输层(ZK+Redis) 数据同步层Rotter 系统架构如图1-1 其中, Manager负责任务配置、数据展示、监控报警等,各机房独立部署; ZK为跨机房集群,A机房为Leader节点,B机房为Follow节点。ZK在方案中负责Rotter节点的注册发现和任务调度。 多活Redis在方案中扮演数据队列的角色,降低了Manager和Rotter节点之间的耦合度。 Rotter是Redis同步任务的执行者,包含replicator和sync两个角色。 replicator是国人开源的基于java语言的redis主从协议实现者redis-replicator,负责解析redis节点指令。 sync负责redis指令跨机房写入,处理同步回环,同步指令监控等。 1.2 同步流程 Rotter中采用链式处理同步数据,任何一个Filter返回失败