
本文试图通过渐进的技术分析,和大家 我们在互联网高并发技术方案选择上的一些思考和决策;从技术选型的高度为架构师在面对高并发业务设计时需要考虑的方方面面做一个参考。
Beautiful Concurrency & Pretty Erlang
前言
环信以“连接人与人,连接人与商业”为使命,旨在为广大企业开发者提供 优质的全球即时通讯PaaS服务。如何实现高并发场景下,弹性化的保障服务质量是我们一贯的业务要求和技术追求。
本文试图通过渐进的技术分析,和大家 我们在互联网高并发技术方案选择上的一些思考和决策;从技术选型的高度为架构师在面对高并发业务设计时需要考虑的方方面面做一个参考。
接下来,enjoy:
Beautiful Concurrency – 并发的必要性
世界是并发的,软件也应该是并发的
我们生活在其中的世界,就是一个巨大的并发系统。每时每刻,在世界的每一个角落,人类的每一个个体都在和这个世界进行着频繁的能量交互,信息交互也是其中的重要组成部分;当我们转换身份,以造物主的视角俯瞰这个世界里所有的万物(动物,植物,海洋,土壤,机器等等)时,也可以看到它们同样在和这个世界进行着无休止的能量/信息交互。
为了与这个世界进行有效的交互,软件也应该是并发的。
世界是分布的,软件也应该是分布的
地球是圆的,世界是平的,不管怎样,从宇宙大 的那个奇点之后,就是分布的宇宙/世界。作为与世界万物(包括人类自己)交互的软件,自然也必须满足分布式要求。而这种地理分布(Geo. Distribution)特性,也仅是并发在空间维度下的反映而已。
世界不可预测,软件也应该是容错的
没有完美的世界:冲突,灾难随时在发生,不管在什么样的维度上。作为软件,bug,crash也是不可规避的现实挑战。即使存在完美的没有bug的程序,运行程序的硬件也可能出现故障。为了增强软件的容错性,代码的独立性(指一个故障不会影响到故障任务以外的其它任务)和故障检测以及故障处理是关键:这一切都需要并发,因为串行程序的容错性远远不如并发程序。
并发方案概览
“七个模型”来源于Paul Butcher著的《Seven Concurrency Models in Seven Weeks》,中文译名《七周七并发模型》,概览的介绍了并发领域的常见方案,希望能给架构师提供一个轮廓化的分类描述。本人在其基础上添加了一些自己的拓展思考(见下文中斜体部分):
1.线程与锁:线程与锁模型有很多众所周知的不足,但仍是其他模型的技术基础,也是很多并发软件开发的首选。—这个方案其实是一个anti-pattern,在高并发场景下如履薄冰(bug,dead lock如影随形),让开发者和运维人员胆战心惊。Ugly Locks to Ugly Concurrency (丑陋的锁,丑陋的并发):locks and condition variables is fundamentally flawed!
2.函数式编程:函数式编程日渐重要的原因之一,是其对并发编程和并行编程提供了良好的支持。函数式编程消除了可变状态,所以从根本上是线程安全的,而且易于并行执行。— 函数之美,逻辑之美!相信很多从命令式语言(Imperative Programming)转战到函数式编程语言(Functional Programminmg)的时候都会发出这样的感叹。其实这一进步恰恰体现了人类在不断的进化过程中,对这个世界认知不断提炼,思维模式逐步由具象走向抽象的演进轨迹。而回到高并发的话题上,函数式编程以不可变状态这一简易的策略,赢得了完美赞誉,俨然已是君临天下的明日霸主!
3.分离标识与状态:如果一个线程引用了持久数据结构,那么其他线程对数据结构的修改对该线程就是不可见的。因此持久数据结构对并发编程的意义非比寻 常,其分离了标识(identity)与状态(state)。— 这又是一个很妙的策略,而大家熟知的version control system如git,包括比特币/区块链的机制都是这一思想指导下的具体实践,限于篇幅,本文不做进一步展开。
4.Actor Model:一种适用性很广的并发编程模型,适用于共享内存模型和分布式内存模型,也适合解决地理分布型问题,能提供强大的容错性。— 开始接触到Actor模型就是通过Erlang语言,后来又接触到Akka(基于Scala)等基于各种语言实现的框架,也越来越体会到这一模型在高并发场景下的游刃有余。本文后续部分会展开介绍。另外,做个招聘小广告,环信通讯云研发团队正在广纳英才,欢迎懂Erlang,有相关高并发开发经验的小伙伴加盟,虚位以待!点这里直接联系我们哟!
版权声明:本文为原创文章,版权归 头条123 所有,欢迎 本文,转载请保留出处!
《信息安全技术 移动互联网应用程序(App)SDK 安全指南》试点工作启动会今日在京举办
京东健康上半年营收202亿元扭亏为盈 新玩家闯关IPO 互联网医疗仍在探索
互联网行业七成员工不到35岁 这些行业年轻人多、收入高!
做好连接器 企业微信将成为腾讯产业互联网的一
世界互联网大会发布蓝皮书:展示新成果 展望新趋势
大唐先一与深信服推出大数据及工业互联网平台联合解决方案
华为云苏州专属月已开启,助力互联网企业云上狂欢
腾讯推出云启产业计划,助力产业互联网建设
互联网晚会“降维打击”综艺晚会?
加仓腾讯60%!全球资管巨头富达国际正全面加仓互联网
百度、支付宝互联网大厂红包齐上线,哪家的羊毛 好薅?
乌镇攻略,思必驰带你玩转 五届世界互联网大
国双科技在乌镇!重磅解读工业互联网的产业人
斩获亚军!西人马赢得 六届中国国际“互联网+”创新创业大赛亚军并斩获金奖!
与大咖论剑乌镇 甬企SPS受邀参加世界互联网大会
加快从“药”到“医”转型升级 互联网巨头如何发力医疗布局?
环信荣获2020年度SaaS企业 TOP100
工信部:我国工业互联网转向规模发展关键期 将研究新一批工业互联网支持政策
剑指大数据 熟、诱导沉迷等问题,《互联网信
物流产业互联网:互联网赋能供应链 重塑产业