做互联网应用很重要的一点是要保证服务可用性,特别是某些业务更是需要7*24小时不间断的对外提供服务,任何停机、宕机都会引起大面积的用户不满。持续可用性是把业务服务化时一个需要考虑的重要指标,很多时候我们都会牺牲一些功能来换取可用性。如何保证服务的持续可用性,是每个互联网架构师一直坚持不懈追求的目标。在不同行业、不同场景下都有不同的解决方案。今天就与大家聊聊特来电在物联网模式下的多活数据中心架构上的认识和实践。

特来电是全球首家提出了将车联网、充电网、互联网三网融合的充电桩生态公司,拥有近18万个充电桩,覆盖了全国240多个城市,服务客户不仅有ToC端、ToB端,还有很多的社会运营车辆。在如此复杂的客户群面前,充电网每时每刻都有大量的充电用户,无论在静寂无声的夜晚,还是在节假日,充电永不停歇。用户入眠的时候,是我们充电网络最繁忙的时刻,可以说特来电的充电网必须要有99.9%甚至更高的可用性,才能满足业务的需要。特来电的充电网与其他厂商的充电桩还不一样,其完全构建在物联网之上的。每个充电终端都是智能的,都在时时刻刻与云平台保持着通讯,下面是业务全景图。

像其他互联网公司一样,我们做多活也是迫不得已的事情:

  1. 所有业务放到一个篮子里面,当出现严重故障时,整个充电云服务将完全宕机,无法满足SLA99.9%甚至更高的要求。

  2. 云平台架构完全是分布式的,部署结构复杂,各产品功能不支持灰度发布,产品新功能上限频繁,产品中隐藏很深的bug,很容易引起大面积的云服务故障。

  3. 因为架构和一些技术实现,一个数据中心服务负载总会有上限,在特定的一些条件下,增加虚拟数量也无法提升系统的服务水平(比如:TCP连接数是有上限的)

基于以上考虑,以及填过无数坑的教训,我们决定必须要建立多活数据中心。既然要建多数据中心,那就要看看业界的一些主流做法和技术趋势。在众多的解决方案中我们找到了两篇非常富有代表性的文章:微信高并发资金交易系统设计方案——百亿红包背后的技术支撑、首席架构师揭秘蚂蚁金服互联网IT运维体系实践。

微信红包的主要思路是:

  1. 系统垂直SET化,分而治之。各个SET之间相互独立,互相解耦。并且同一个红包ID的所有请求,包括发红包、抢红包、拆红包、查详情详情等,垂直stick到同一个SET内处理,高度内聚。通过这样的方式,系统将所有红包请求这个巨大的洪流分散为多股小流,互不影响,分而治之。

  2. 逻辑Server层将请求排队,解决DB并发问题。使拆红包的事务操作串行地进入DB,只需要将请求在Server层以FIFO(先进先出)的方式排队,就可以达到这个效果。从而问题就集中到Server的FIFO队列设计上。

  3. 双维度库表设计,保障系统性能稳定。当单表数据量达到一定程度时,DB性能会有大幅度下降,影响系统性能稳定性。采用冷热分离,将历史冷数据与当前热数据分开存储。系统在以红包ID维度分库表的基础上,增加了以循环天分表的维度,形成了双维度分库表的特色

蚂蚁金服的主要思路是:

蚂蚁金服提出了“LDC”架构,其核心思想是:把数据水平拆分的思路,向上提升到接入层、终端层,从接入层开始,把原来部署在一个IDC中的系统集群,进一步分成多个更细粒度的部署单元。

  1. 每个单元对外是封闭的,在一个单元内的系统调用链路和各类存储访问是局部化在本单元内的;

  2. 每个单元的实时数据是独立不共享的;会员或配置类信息等对延时性要求不高的数据全局共享;

  3. 单元间的通信统一管控,尽量以异步化消息进行通信;同步调用则通过单元间代理方案实现。

通过两家互联网巨头公司的方案可以看出一个共同的特点,就是期望通过分流的模式,把大流量切成小流量,从接入层开始,把原来部署在一个IDC中的系统集群,进一步分成多个更细粒度的部署单元 ,应对流量压力。这种架构下,不仅仅解决了流量天花板问题,而且在系统整体可用性上有了一个质的变化。即使系统不可用,也是少部分服务单元出问题,不会影响全国业务。这不正是我们梦寐以求的东西吗?

基于此我们规划设计了特来电云平台的多活系统架构。总体思路是分为三步走:

第一步:中间件、技术平台要进行适应性改造,以支持多数据中心、多Set化的架构。不管后续部署结构如何变化,技术平台和组件都要可适应。下面是技术平台和中间件的架构图,图中的五个平台都需要改造。

第二步:架设两个数据中心,每个数据中心部署一个服务单元,两个数据中心进行引流,验证总体架构和设想,实现双活架构。核心思路:

  1. 上海、北京异地两数据中心双活,部分充电桩分流到上海数据中心。

  2. 用户充电时,根据集控所在数据中心,下达充电指令。非充电业务,默认访问主数据中心

  3. 当北京数据中心或上海数据中心宕机时,通过流量管理器自动切换到另一个数据中心。提升系统可用性。

第三步:架设多个数据中心、多个服务单元,按照地区对流量进行切割,真正实施多活架构。核心思路:

  1. 建立多活数据中心,每个数据中心多个服务单元。

  2. 充电桩在接入云服务时,根据所在地区自动引流到对应的服务单元。

  3. 用户充电时,根据登录地区,由流量管理器映射到对应的服务单元

通过近半年的努力,我们不仅完成了第一步的工作,而且还完成了第二步规划。在2017-6-27日,上海数据中心正式激活并引流成功。至此,我们终于在多活架构上迈出了最坚实的一步。这标志着,我们不仅仅具备了完善了技术架构,而且这个架构是可以复制的、多活的,终于有可能把整个系统可用性做到100%。

架构的变迁会随着业务的变化而变化,不同阶段有不同的需求。规划了这些、做了这些,也是只万里长征的第一步。2020年后才会真正迎来新能源汽车爆发式发展,届时会有50%以上的电动汽车在我们的平台下充电,每天都有可能数千万度电甚至数亿电在特来电的充电网上发生。架构的升级将会继续,会越来越快,也会越来越复杂,但是我们乐在其中,期望志同道合的战友一起战斗!!!

原文地址:http://www.cnblogs.com/vveiliang/p/7156847.html


.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注

物联网模式下的多活数据中心架构认识与实践相关推荐

  1. ACT5.6 动手实验手册 如何在工作组模式下对客户端进行数据收集 如何在AD域环境下对...

    ACT5.6 动手实验手册 实验的目标 这个实验的目的是: · 了解如何部署ACT5.6 · 了解如何在工作组模式下对客户端进行数据收集 · 了解如何在AD域环境下对客户端进行数据收集 本次试验大约6 ...

  2. 物联网模式下的污水处理前景分析

    绿色制造是生态文明建设的重要内容.工业化为社会创造了巨大财富,提高了人民的物质生活水平,同时也消耗了大量资源,给生态环境带来了巨大压力,影响了国家整体产业的健康发展.我国作为制造大国,尚未摆脱高投入. ...

  3. [多活] 分布式、多活数据中心如何实现DNS域名解析和负载均衡?

    关于双活技术和业界主流方案,应大家要求做了分析和分享(参考历史发文),为了帮助大家进一步理解,特意将重要知识点做了梳理和细化,并整理成文.由于平时工作繁忙,只有利用周末时间写写文章,为了表示对我付出的 ...

  4. 技术解析:openstack vlan模式下的隔离和数据流向(转)

    一.隔离 计算机网络,是分层实现的,不同协议工作在不同层,按着OSI的分层模型,共有七个层,我们一般所说的隔离,通常指的是第2层,也叫"数据链路层";数据链路层的网络包,也叫&qu ...

  5. linux ——Uboot模式下读取NORflash芯片数据

    命令: md指令 uboot下输入指令md,会提示md的用法,memory display,即内存显示. md [.b, .w, .l] address [# of objects]- memory ...

  6. 亿级用户、跨千公里数据中心异地双活的实践丨中国电信甜橙金融

    点击关注 InfoQ,置顶公众号 接收程序员的技术早餐 作者|张小虎 编辑|小智 天翼电子商务有限公司(简称"甜橙金融")是中国电信的全资子公司,2011 年 3 月成立于北京,现 ...

  7. 数据中心架构和发展分析

    导读 随着5G.AI和IoT等各类信息新技术的发展,对数据中心的需求越来越强烈.传统的数据中心五层架构需要更多的集成优化,以更好满足各类应用的算力需求.未来数据中心的发展方向将不再局限于云数据中心,边 ...

  8. 《NX-OS与Cisco Nexus交换技术:下一代数据中心架构(第2版)》一1.5 VDC

    本节书摘来自异步社区<NX-OS与Cisco Nexus交换技术:下一代数据中心架构(第2版)>一书中的第1章,第1.5节,作者 [美]Ron Fuller, CCIE#5851 , Da ...

  9. 先不听BAT高谈阔论,只看企业实际应用:数据中心架构如何演进?

    互联网崇尚分享,互联网公司的大牛们也乐于与业内的同行在各种大型会议.小型沙龙上分享技术心得.切磋实战经验,这一浪潮的兴起,在短时间内对中国互联网及IT开发.运维领域的整体水平的进步,起到了不可忽视的重 ...

最新文章

  1. matlab常遇小问题汇总
  2. R语言使用ggplot2包使用geom_dotplot函数绘制分组点图(改变分组的次序)实战(dot plot)
  3. 为什么Android项目mainactivity中有一个变量R_博客笔记大汇总,Android优化总结篇
  4. 细述hbase协处理器
  5. 小米盒子4 android版本,安卓系统越用越卡,曾学忠:小米 10 至尊纪念版搭载黑科技 MITurbo 4.0 技术...
  6. 【翻译】Designing Websites for iPhone X
  7. 前端学习(2061):vue的mvvm
  8. jdk安装失败_windows配置安装单个Tomcat
  9. 基于小样本学习的图像分类技术综述
  10. android属性动画缩放和平移同时,Android 实现属性动画平移,旋转,缩放,渐变 《H》...
  11. 趣谈预留实例券,一文搞懂云上省钱最新玩法
  12. 【TensorFlow】TensorFlow从浅入深系列之二 -- 教你通过思维导图深度理解深层神经网络
  13. 阿里云服务使用docker安装mysql
  14. PEP 263 -- Defining Python Source Code Encodings(定义Python源代码编码)
  15. Redis设计与实现笔记 |目录
  16. Cadence OrCAD17.2禁止start page启动设置方法
  17. OC算法 输出手机号码归属地
  18. 软件可靠性测试概念与应用
  19. 内网ip如何传输文件
  20. Tomcat修行之路-3.类加载机制的原理

热门文章

  1. 二狗叫你制作千M网线的线序及方法
  2. XP下Virtualbox虚拟Ubuntu共享文件夹
  3. 更轻易地实现 Jwt Token
  4. 让 AI 为你写代码 - 体验 Github Copilot
  5. C# 极限压缩 dotnet core 控制台发布文件
  6. 优化 .NET Core logging 中的泛型 logger
  7. 寻找性能更优秀的不可变小字典
  8. TensorFlow 2学习和工业CV领域应用 心得分享
  9. IdentityServer4系列 | 客户端凭证模式
  10. 干货分享:如何使用Kubernetes的Ingress API