高可用

为什么 kubernetes 天然适合微服务 (3)

ぃ、小莉子 提交于 2020-02-16 03:56:04
此文已由作者刘超授权网易云社区发布。 欢迎访问 网易云社区 ,了解更多网易技术产品运营经验 四、Kubernetes 本身就是微服务架构 基于上面这十个设计要点,我们再回来看 Kubernetes,会发现越看越顺眼。 首先 Kubernetes 本身就是微服务的架构,虽然看起来复杂,但是容易定制化,容易横向扩展。 如图黑色的部分是 Kubernetes 原生的部分,而蓝色的部分是网易云为了支撑大规模高并发应用而做的定制化部分。 Kubernetes 的 API Server 更像网关,提供统一的鉴权和访问接口。 众所周知,Kubernetes 的租户管理相对比较弱,尤其是对于公有云场景,复杂的租户关系的管理,我们只要定制化 API Server,对接 Keystone,就可以管理复杂的租户关系,而不用管其他的组件。 在 Kubernetes 中几乎所有的组件都是无状态化的,状态都保存在统一的 etcd 里面,这使得扩展性非常好,组件之间异步完成自己的任务,将结果放在 etcd 里面,互相不耦合。 例如图中 pod 的创建过程,客户端的创建仅仅是在 etcd 中生成一个记录,而其他的组件监听到这个事件后,也相应异步的做自己的事情,并将处理的结果同样放在 etcd 中,同样并不是哪一个组件远程调用 kubelet,命令它进行容器的创建,而是发现 etcd 中,pod 被绑定到了自己这里

为什么 kubernetes 天然适合微服务 (3)

我是研究僧i 提交于 2020-02-16 03:44:17
此文已由作者刘超授权网易云社区发布。 欢迎访问 网易云社区 ,了解更多网易技术产品运营经验 四、Kubernetes 本身就是微服务架构 基于上面这十个设计要点,我们再回来看 Kubernetes,会发现越看越顺眼。 首先 Kubernetes 本身就是微服务的架构,虽然看起来复杂,但是容易定制化,容易横向扩展。 如图黑色的部分是 Kubernetes 原生的部分,而蓝色的部分是网易云为了支撑大规模高并发应用而做的定制化部分。 Kubernetes 的 API Server 更像网关,提供统一的鉴权和访问接口。 众所周知,Kubernetes 的租户管理相对比较弱,尤其是对于公有云场景,复杂的租户关系的管理,我们只要定制化 API Server,对接 Keystone,就可以管理复杂的租户关系,而不用管其他的组件。 在 Kubernetes 中几乎所有的组件都是无状态化的,状态都保存在统一的 etcd 里面,这使得扩展性非常好,组件之间异步完成自己的任务,将结果放在 etcd 里面,互相不耦合。 例如图中 pod 的创建过程,客户端的创建仅仅是在 etcd 中生成一个记录,而其他的组件监听到这个事件后,也相应异步的做自己的事情,并将处理的结果同样放在 etcd 中,同样并不是哪一个组件远程调用 kubelet,命令它进行容器的创建,而是发现 etcd 中,pod 被绑定到了自己这里

实践高可用

六眼飞鱼酱① 提交于 2020-02-15 22:24:01
  本篇文章是之前一篇《大话高可用》的高可用心法的案例篇。   说实践之前先说概念。   业界可靠性和可用性的衡量标准:   将可用性做一个目标分解即为: MTBF:发生频率要低 MTTR:故障恢复要快   先考虑发生频率低的问题。就是怎样别人死我们不死;自己不作死;不被队友搞死。故障恢复要快,那就需要事先做好应急备案,快速准确的监控报警,故障时快速切换备案。具体实践如下: 架构高可用   交易这边进行在进行重构。将原有的核心交易从职责上划分为交易收单、交易保障和数据中心三个大块。   从高可用上,交易收单要保证实时交易现场的可用。除了交易现场必需的事情,其他什么都不做。除了发号器、加密器、监控报警等自身必需的中间件外,不使用其他与其他端通信的中间件。核心策略是去依赖。主要考虑点在MTBF。   交易保障的定位是交易现场完成后一切让交易数据正确的工作都是交易保障的工作。为了可以高效的及时修补数据、检测交易数据与各个端的一致性就需要适当用到一些中间件和交易收单进行通信。这就有依赖关系了。有依赖就要容灾。如果一个中间件出现问题了,就切换另外一个中间件。用的是同一个中间件,只是在不同的机房,这就是机房互备容灾。如果是不同的中间件,就是旁路容灾。都行不通怎么办?数据库轮询兜底,这属于降级容灾。对交易来说,交易保障为后续结算提供准确的数据,只要定时结算的时候数据是准确的,主要考虑点在MTTR

如何构建延迟任务调度系统

与世无争的帅哥 提交于 2020-02-15 13:43:15
一、需求目标 1.需求描述 之前笔者接触过一些营销业务场景,比如说: 用户注册未登录过APP第二天早上10点发一条营销短信促活 红包过期前两天短信通知,下午16:00发送 等等定时任务处理业务。 采用的技术方案是定时任务扫数据汇总表,分页读取一定数量然后处理 然而随着业务的发展,业务多元化,遇到了以下场景: 拼团砍价活动过期前半小时提醒 订单提交半小时内没有完成支付,订单自动取消,库存退还 用户几天内没有操作过系统,发放激活短信 以上场景处理时间不是固定的某个点,而是业务发生的时间推迟一段时间,针对以上的业务场景,我们考虑可以根据不同业务建表,然后每隔一段时间去定时扫表,各自处理业务。 但是随着业务增加,表泛滥,而且此类业务其实有很多相同的地方,那么我们可以考虑把相同逻辑抽离出来,利用延迟队列来处理任务 2.延时队列设计目标 可靠性:任务进入延时队列之后,必须被执行一次 高可用性:支持多实例部署 实时性:允许一定时间误差,当然误差越小越好 可管理:支持消息删除 高性能:数据量大的情况下也能保证高性能 二、技术调研 延时队列实现的几种方式 java.util.Timer + java.util.TimerTask java.util.concurrent.ScheduledExecutorService Quartz java.util.concurrent.DelayQueue

8.RabbitMQ实现集群高可用

爱⌒轻易说出口 提交于 2020-02-14 08:30:30
RabbitMQ实现集群高可用 前言 为什么搭建rabbitmq集群? rabbitmq集群有那些模式? 如何搭建Rabbitmq集群? rabbitmq镜像高可用策略有那些? RabbitMQ这款产品本身的优点众多,大家最看好的便是他的异步化提高系统抗峰值能力,然后便是系统及功能结构解耦,既然它如此重要,那么我们就需要考虑它的高可用性。 rabbitmq有3种模式 : 单一模式:即单机情况不做集群,就单独运行一个rabbitmq而已,生产上肯定不能用。 普通模式:普通集群就是在多台机器上启动多个实例。每个队列只会存在其中的一个实例上,然后所有实例同步这些队列的元数据。消费者在进行消费的时候,如果连接的实例上恰好不是队列所在的实例,就会根据队列的元数据去队列所在实例上拉取数据 由此可知,集群模式并没做到分布式,如果队列所在的实例宕机了,会导致接下来其他实例就无法从那个实例拉取消息,所以集群主要是提高吞吐量的 镜像模式:把需要的队列做成镜像队列,存在与多个节点属于** RabbitMQ的HA方案 。**该模式解决了普通模式中的问题,其实质和普通模式不同之处在于,消息实体会主动在镜像节点间同步,而不是在客户端取数据时临时拉取。该模式带来的副作用也很明显,除了降低系统性能外,如果镜像队列数量过多,加之大量的消息进入,集群内部的网络带宽将会被这种同步通讯大大消耗掉

Redis集群

◇◆丶佛笑我妖孽 提交于 2020-02-14 00:06:08
目前为止Redis官方支持的三种集群方式 (以下内容仅为作者的个人理解,如果存在错误欢迎指出) 1:Redis主从配置(容错率较低,master节点宕机后整个服务就不可用了。) 2:Redis哨兵模式(是在主从集群的升级版本,支持master自动切换。不支持横向扩容) 3:Cluster集群模式(需要升级至Redis 3.0) Redis主从配置 简介: 主:一个Redis服务器为Master节点。负责写入数据,和同步数据至从节点。 从:一台或者多台Redis服务器为Slave节点。不支持写入数据,可以提供同读取数据的服务(但是可能会出现主从数据不一致的情况) (缺点:不能水平扩容,并且该模式的高可用特性都会受到Master主节点内存的限制。) 主从配置数据同步的过程简介: 当Slave节点首次启动时,会主动向Master节点发起socket连接。在连接成功后会发送SYNC命令进行数据同步(该同步是全量同步),之后主节点会每隔10秒钟(默认配置)向从节点发送PING命令(心跳)来保证连接的有效性。从节点会每隔1秒钟(默认配置)向主节点发送REPLCONF ACK命令来维护数据偏移量的offset。之后会从节点会向主节点发送PSYNC命令来同步增量数据(如果一切正常的情况下是进行增量复制。但是具体是进行全量复制还是,增量复制有很多种情况决定)。

MYSQL高可用——MHA(概述与安装)

陌路散爱 提交于 2020-02-13 20:18:43
MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职于Facebook公司)开发,是一套优秀的作为MySQL高可用性环境下故障切换和主从提升的高可用软件。在MySQL故障切换过程中,MHA能做到在0~30秒之内自动完成数据库的故障切换操作,并且在进行故障切换的过程中,MHA能在最大程度上保证数据的一致性,以达到真正意义上的高可用。 github地址: https://github.com/yoshinorim **该软件由两部分组成:MHA Manager(管理节点)和MHA Node(数据节点)。**MHA Manager可以单独部署在一台独立的机器上管理多个master-slave集群,也可以部署在一台slave节点上。MHA Node运行在每台MySQL服务器上,MHA Manager会定时探测集群中的master节点,当master出现故障时,它可以自动将最新数据的slave提升为新的master,然后将所有其他的slave重新指向新的master。整个故障转移过程对应用程序完全透明。 ​ 在MHA自动故障切换过程中,MHA试图从宕机的主服务器上保存二进制日志,最大程度的保证数据的不丢失,但这并不总是可行的。例如,如果主服务器硬件故障或无法通过ssh访问

数据库周刊 | DBA 核心技能

跟風遠走 提交于 2020-02-12 12:22:51
墨天轮数据库周刊第10期发布啦!每周1次推送本周数据库相关热门资讯、精选文章、干货文档,欢迎大家留言评论反馈您的建议哦。 热门资讯 1. SQLite 3.31.0 发布,世界上使用量最大的数据库引擎 【摘要】Eygle在“2020年1月数据库流行度排行:从万里挑二到波澜不惊”的文章中提到:“SQLite超过了Cassandra,跻身第10名”,并对SQLite做了介绍。作为2020年的第一个大版本,SQLite 3.31.0已完成发布,该版本主要功能之一是对生成/计算列的支持。本文介绍了具体更新内容。 2. 巨杉数据库 v5.0 Beta版 正式发布 【摘要】新年伊始,巨杉正式推出了巨杉数据库(SequoiaDB) v5.0 Beta版。本文介绍了SequoiaDB v5.0 版本的五大新特性:ARM架构的官方支持、新监控与运维体系、增强的MVCC能力、智能化问题诊断与分析能力、自动化数据库实例高可用部署。 3. 共克时艰 · 略尽绵薄丨云和恩墨打响三大战“疫” 【摘要】疫情当前,云和恩墨共克时艰,打响三大战“疫”。为医疗卫生机构免费提供线上数据库技术支持服务和数据库技能培训服务,提供数据库实时监控与智能巡检平台Bethune(白求恩)1年免费试用期,帮助运维人员和IT管理者提高运维质量和效率。 4. 2020年2月数据库流行度排行:冬日虽然寒冷,春光必定灿烂 【摘要

数字化转型之基础设施篇 | QingStor®️NeonSAN®️ 企业云存储实践

萝らか妹 提交于 2020-02-12 02:34:22
据 IDC 最新报告预测,2022 年中国 50% 以上的组织都将成为数字化坚定者,依靠新的商业模式、数字化产品与服务实现业务增长。 面对数字化转型的时代浪潮,青小云为大家准备了一份硬核大礼 —— 《数字化转型之路》 ,包含 基础设施 、 业务架构 、 解决方案 到 行业实践 、 未来探索 五个部分,该系列 是对数字化转型理论与具体实践路径的系统梳理 ,希望帮助读者全面准确把握数字化转型发展趋势与前沿技术,促进企业与组织能够在变革的数字化世界中创造更大的价值,实现更强健的生命力。 今天与大家分享的是《数字化转型之路》中基础设施篇——利用 QingStor®️NeonSAN®️ 打造强劲的核心业务存储引擎。 以下是分享正文: Neon 是一个惰性气体,它是化学元素周期表第十位,不燃烧、不助燃,不活跃, 非常稳定。我们通过这个名字命名我们的存储,希望存储产品像惰性气体一样地稳定,因为稳定是存储最根本的要求。 为企业核心业务而生的 QingStor®️ NeonSAN®️ NeonSAN®️ 作为企业级软件定义的分布式块存储,它在青云经历了多年的研发迭代与广泛的用户验证。分布式存储是 QingCloud 云平台体系中的重要组成部分,很早就以云平台超融合的方式为客户提供服务。后面我们发现很多客户提出独立存储需求,我们把云平台的存储进行解耦,作为独立产品推出。 NeonSAN®️

keepalived的概述与安装

眉间皱痕 提交于 2020-02-11 14:10:31
keepalived是什么 Keepalived软件起初是专门为LVS负载均衡软件设计的用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了可以实现高可用的VRRP功能。因此,Keepalived除了能够管理LVS软件外,还可以作为其他服务的高可用解决方案软件。 Keepalived软件主要是通过 VRRP协议实现高可用功能的, VRRP是Virtual Router Redundancy Protocol(虚拟路由器冗余协议)的缩写.VRRP出现的目的就是为了解决静态路由单点故障问题的 Keepalived 是一个免费开源的,用C编写的类似于layer3, 4 & 7交换机制软件,具备我们平时说的第3层、第4层和第7层交换机的功能。主要提供 loadbalancing (负载均衡)和 high-availability (高可用)功能,负载均衡实现需要依赖Linux的虚拟服务内核模块(ipvs),而高可用是通过VRRP协议实现多台机器之间的故障转移服务。 VRRP原理 1.master在工作状态会不断群发一个广播包(内涵优先参数) 2.其他路由收到收到广播后会和自己的优先参数作对比,如果优先参数小于自己则什么都不执行,如果优先参数大于自己则开启争抢机制 3.如果启动了争抢机制,他就会群发自己的优先参数,最终优先参数最小的称为master路由.