感谢许志强老师的辛苦付出。2015年1月13日 参加云通讯PaaS平台学习,特作此记录。

大纲:

  1. 选择Paas平台的考量(我的企业是否适合选PaaS平台,我应该选怎么样的PaaS平台)
  2. 基于PaaS平台的开发、测试、部署和迁移的流程、关键技术和注意事项
  3. 如何构建能支持千万级用户的大规模PaaS平台?技术挑战有哪些?有哪些经验和教训?
  4. 如何实现PaaS平台的高可靠性?
  5. 如何保证PaaS平台的安全性?

一、云通讯PaaS平台的挑战

  • 客户业务突然爆发性增长
  • 系统受到DDOS攻击
  • 运营商政策调整,某些呼叫不能落地
  • IDC机房光纤被挖断
  • 系统升级出现BUG,业务全停
  • 业务主机H突然宕机:

二、可靠性追求

技术挑战

  • 可靠性
  • 扩展性
  • 安全性
  • 可管理性
  • 经济性

可用性标准

5个9的追求:
Availability Downtime/Year Example
90% 36days 2hours Personal clients
99% 87 hours 36 minutes Entry-Level Business
99.9% 8 hours 46 minutes ISP,mainstream Business
99.99% 52 minutes 33 seconds Data Centers
99.999% 5 mintue 15 seconds carrier-grade Telco,Banking
99.9999% 31.5 seconds Militray defense system

高可用性——High Availability

  • 清除单点故障
  • 故障自动检测
  • 故障隔离
  • 运维操作Web化自动化

消除单点故障原则

  • 常规方案,主备、集群Cluster负载均衡:
  • 数据库分库、分表方案:
    初始规划就要考虑。以前做运营商系统通常选择oracle Sybase,而互联网企业多用MySql。经典案例,余额宝,天宏基金早期是Oracle,后来与阿里合作,移植到MySql上。其单机无法与SyBase比,而是用许多数据库服务器进行分库分表。初期就要考虑分库分表,后期改成本会相当高。
  • 大系统小做 :
    许多人刚开始策划功能都会想的非常复杂,但其可靠性难以得到保证。设计大的系统一定要往小的做,尽可能降低交互的复杂性,不要设计的非常复杂,交互其中一个环节有问题都会导致故障。
    系统里一个小的部分,尽量完成单一职责,不要很多事情一起做。单个服务 高内聚、低耦合。参考文章:http://martinfowler.com/articles/microservices.html。
    一个系统过大,不利于扩展,出问题机率大。
  • 尽可能做到无状态:nginx每次响应是独立的,这次请求与上次请求尽可能独立。(原子性)。
    不是所有东西都可以无状态,如通信过程,发起、接听、摘机等,必须保存呼叫状态,这就必须有状态。这种情况下要做成分组,或子系统。假如所有有状态的请求能分配到不同组,系统出现故障影响小的分组,分组出问题就切换到另外分组。从分组角度看就是无状态。如A、B、C三组。在连接的时候选择一个服务节点。
  • 异地部署、容灾
    对于云服务提供商很重要,IT机房的可靠性也不是非常高,当部署到一个机房的服务不能使用时,对用户影响很大。所以必须要考虑异地部署、容灾。
  • 不能做到无状态就需要分组

一个多机房系统的方案

通过智能DNS。
产生的问题:用户可能用公用的DNS,如谷歌的DNS 或其它开放的DNS,可能会造成判断的区域有问题。一般会做两层,智能DNS只是前置的识别,具体业务节点对真正IP进行二次路由。设置一个折中的时间进行DNS解析。
每个节点要能独自提供服务。

单IDC内部署结构

跨区域数据同步解决原则:

一致性:数据同步
可用性:一台宕机能不能再提供服务
分区容忍性:如北京与广州之间断了,还能不能分别提供服务;事实是要求能分别提供服务,这时对数据一致性要求就没那么高了。一般互联网对数据一致性要求可能不是那么高。
IVR服务:不是所有都全部一致,如果要强一致性,数据同步;
再如账单:也不是强一致性的。在某些系统里 客户查询的余额不必是最终的结果。信用卡线下刷卡的方式,也是一段时间后同步过去。
使用Cassindra分布式NoSql数据库。
kafka消息队列缓冲是什么。
而传统的关系型数据库在处理一些数据时比NoSql更具优势,所以后端需要MySql支持。
关系型数据库与NoSql间要有数据同步,需要程序进行处理。

怎么做故障检测

设计系统时,就要考虑到系统会出现哪些故障。
原则:

在用户反馈前发现系统故障

如用户打电话,第一次打电话打不通,在第二次尝试时要能检测并解决问题。

分层次的故障检测:

  • 最底层是机器的检测:如检测机房故障,转移DNS。检测机器故障,要把机器移除出来。
  • 模块的检测:
  • 业务功用的检测:模拟用户操作进行检测。

防止误检测保护:

检测本身有失误的情况,如IDC整个网络不通,判断故障之前不能整个机器Ping不通,就改了DNS。而要多种渠道确认故障。

运维自动化、WEB、数据化:

  • 手工操作有极大的安全隐患,避免手工操作引起的系统问题,设计之初就要考虑可运维的、可自动运维的。
  • 模块的升级、维护全部通过WEB进行。
  • 通过收集的数据进行运维,设计时要考虑把数据采集进来,进行分析,提前预判一些故障。当发现某台机器ping 响应很久,就预示机器可能会出现故障;或机器的I/O非常高,预测磁盘可能出现问题;或带宽高等。通过运维的手段,使系统的可靠性提高。

灰度发布:

整体更新可能的问题:新功能虽然经过测试,但总可能出现问题,上线后隐藏的BUG可能会引起所有客户的全局故障。采用灰度发布,系统发布的时候是渐进的,整个系统里可能有相同模块、不同版本存在,系统首先在沙盒系统更新,调试、测试。稳定后进入客户组1,等等。。。

三、支持百万、千万、上亿的在线用户

  1. 操作系统调优:
  2. 采用异步接口:IOCP、epoll
  3. 内存数据库缓存、减少数据库操作:
  4. 内部采用长连接,如Protocol Buffer、thrift avro protobuf等:系统内部长连接减少连接开销。
  5. 节点可并行扩展、Cluster集群:openstack
  6. 自动部署新业务节点支持服务:
常规想法:QQ号码,如果有3台,那QQ号除以3,分配到不同服务器。但添加服务器时,负载分配会有很大波动。如果是对于数据库,波大会有很大影响。
分布式系统,很多采用一致性Hash的负载分配,

四、互联网的语音质量保证

  • 语音编码的选择:如silk、sap g.729
  • 网络状况的检测:
  • 自适应码流调整:
  • 网络封包大小的选择:
  • 质量反馈机制:两端通信,知道对端的情况。如果RDPC标准协议能够知道对方情况。
  • 智能IP路由:根据客户端的IP,决定到哪个路径到服务器最短。丢包以后怎么处理,丢弃还是补偿,或用延迟换语音质量。
  • NACK捎带机制:

五、安全性:

网络DDOS攻击:

一般自己要靠二次平台提供商或IDC帮做这部分功能。像阿里云前端有流量清洗设备,帮助清理一些攻击。如果量很大了,也很难处理。要尽可能找大的服务商,如阿里云。
小流量攻击,可以用iptables等工具处理。

业务的安全沙箱隔离:

像服务器落地资源是有限的,不可能为用户恶意占用,造成其他客户无法使用。每个用户能够使用多少资源是有限制的,包括对接口的调用频度。在系统设计之初就要考虑,防止恶意占用资源。如果是正常的,就要调高其资源阈值。

通话的安全性:

如通话加密的接口,通过这些接口的通话内容,平台提供商也无法解密。一般的用户可能不需要这么高加密级别。

六、构建自己的云通讯平台

开源的成熟方案:
WebRTC:Google开源的,用来作浏览器端即时通讯解决方案;neteq,google收购,在终端一侧大幅提高语音质量。
openfire:IM
opensips:IM
KAMAILIO:
Asterisk:
FreeSWITCH:
mobicents:开源的通讯的方案提供商
telestax:

(容联云通讯提供的免费服务)移动端融合通讯能力API

  • IM
  • 视频通话
  • VoIP
  • 视频会议
  • 语音会议
云存储用的阿里云存储。

PaaS 平台学习(开源力量OSF)构建千万级大规模、高可靠PaaS平台的技术挑战 学习笔记相关推荐

  1. 知乎技术分享:知乎千万级并发的高性能长连接网关技术实践

    本文来自知乎官方技术团队的"知乎技术专栏",感谢原作者faceair的无私分享. 1.引言 实时的响应总是让人兴奋的,就如你在微信里看到对方正在输入,如你在王者峡谷里一呼百应,如你 ...

  2. 世界杯千万级直播高稳定的挑战和实践

    今年夏天,俄罗斯世界杯召开.在刚刚落幕的重庆云栖飞天技术汇专场中,阿里视频云技术专家裘良科,就世界杯这个话题,跟参会嘉宾一起探讨了千万级直播高稳定的挑战和相关实践,本文为演讲全文. 2018年俄罗斯世 ...

  3. 电信运营商基于 MQTT 协议 构建千万级 IoT 设备管理平台

    MQTT 是用于物联网的标准消息传递协议.它被设计为一种非常轻量级的发布/订阅消息传送,非常适合以较小的代码占用量和网络带宽连接远程设备.MQTT 协议具有以下特点: 轻巧高效:MQTT 客户端非常小 ...

  4. 如何打造千万级Feed流系统?阿里数据库技术解读

    2017年的双十一又一次刷新了记录,交易创建峰值32.5万笔/秒.支付峰值25.6万笔/秒.而这样的交易和支付等记录,都会形成实时订单Feed数据流,汇入数据运营平台的主动服务系统中去.数据运营平台的 ...

  5. 浅谈千万级高性能高并发网站架构

    浅谈千万级PV/IP规模高性能高并发网站架构 高并发访问的核心原则其实就一句话"把所有的用户访问请求都尽量往前推". 如果把来访用户比作来犯的"敌人",我们一定 ...

  6. 千万级中电金信信贷平台再传捷报

    近期,中电金信又传捷报!数千万中标某头部农信联社下一代信贷业务综合管理平台. 这次中标,标志着中电金信在商业银行信贷业务方向上实现了从量变到质变的成功突破,成为头部和主流商业银行信贷领域建设的核心中坚 ...

  7. 【课程学习】(中国大学MOOC)武汉理工大学高级人工智能原理与技术课后习题笔记(6-9章)

    关于 拾年之璐 微信公众号:知行校园汇,点击查看,欢迎关注 其他平台(点击蓝字可访问): GitHub | Gitee | 哔哩哔哩 | 语雀 | 简书 | 微信小程序 | 知行达摩院 本文专栏:研究 ...

  8. 【课程学习】(中国大学MOOC)武汉理工大学高级人工智能原理与技术课后习题笔记(1-5章)

    关于 拾年之璐 微信公众号:知行校园汇,点击查看,欢迎关注 其他平台(点击蓝字可访问): GitHub | Gitee | 哔哩哔哩 | 语雀 | 简书 | 微信小程序 | 知行达摩院 本文专栏:研究 ...

  9. bootstrap项目实例_精选开源SpringBoot项目:涵盖权限、搜索、秒杀、支付!值得学习...

    头条发文以来,分享了一些科技资讯,有趣的视频剪辑,今天首次整理一些开源项目分享.既是对自己的学习督促,也是对有需要人的一种便利. 开源项目一: mall商城 star数:29.8k 项目地址:http ...

最新文章

  1. Key-Value数据库:Redis与Memcached之间如何选择?
  2. [python]目录及文件操作
  3. 两个ListBox中的项互相移动及上下移动
  4. [24]CSS3 弹性伸缩布局(上)
  5. 17秋 软件工程 团队第五次作业 Alpha Scrum3
  6. 寻找三角形(编程题)
  7. TCP和UDP报文头格式(转)
  8. ACdream 1728 SJY's First Task
  9. 三菱伺服驱动器示例_三菱伺服电机伺服驱动器
  10. 今天看到CSDN某博客提到的linux在线音乐播放器,移动的咪咕音乐不错,推荐一下
  11. 【Arduino】步进电机驱动程序Stepper_Motor_TB6600
  12. Win10删除需要trustedinstaller权限的文件的方法
  13. 工作两年前端经验分享
  14. 中国房地产总市值与GDP的比例
  15. oracle数据库exec用法,Sql中exec的用法
  16. 神奇的二进制转换和运算
  17. 《AutoCAD 2014中文版超级学习手册》——第2章 图层设置 2.1 设置图层
  18. 撤销 git commit操作
  19. c语言航标知识点,问题——阅读教学的航标
  20. 互联网教育已过时,教育科技才是未来的趋势

热门文章

  1. 今天给大家分享用scratch的画笔绘制彩色花瓣!
  2. 多多情报通:拼多多卖茶叶需要食品许可证吗?还需要什么证件?
  3. Java爬虫 --- 爬取王者荣耀英雄图片
  4. wxpython后台如何更新界面信息_wxpython后台线程更新界面控件方法
  5. 大数据应用案例,告诉你最真实的大数据故事
  6. [NOI2003] 文本编辑器
  7. 细说php作者高洛峰免费收徒
  8. 测开 - 自动化测试selenium(WebDriver API) - 细节狂魔
  9. 苹果软件更新在哪里_苹果再次为已停产的AirPort发布软件更新
  10. 批量识别图片中文字(python、百度开发者工具)