猿,开发分布式系统你注意这些了吗?

随着计算机技术的不断发展、社会互联网需求在纵向和横向上的不断扩大,传统的软件技术架构越来越不能适用快速变化的时代需求。从最初的单机应用、到双机热备、到集群、到分布式、到云计算等...,技术的更迭之快让人眼花缭乱。

今天,就和大家简单地聊聊程序员开发过程中如何考虑分布式系统。

那什么是分布式架构?分布式架构是指由大量分布在不同区域、主机上的各种服务共同构建应用业务的服务系统。那么,单机应用是如何演变到分布式架构的呢?

互联网诞生之时,由于传输信息以文本为主,加上网上用户群体少、业务场景简单(以简单业务介绍、博客等为主),传统的单一服务应用就可满足需求。例如,一台普通性能的服务器搭载一套邮件系统项目即可实现外网可访问的邮件服务系统。

随着传输信息种类(文本、图片、视频、音频)的丰富、用户群体增大、业务场景(聊天、视频、购物等)的丰富以及计算机硬件单机性能增加无法对应日益增长的需求,分布式服务应运而生,从双机热备、单一机房集群、区域集群、到囊括成千上万设备的分布式架构。

作为程序员,一般都是从简单的单机应用开始编程。在经历了类似JSP/Servlet,MVC等经典开发框架后,该如何开始良好的分布式系统开发呢?

第一,分布式系统需要水平和垂直可扩展性。分布式系统服务需按照业务需求总量增加和减少服务实例,这就需要将分布式服务做成独立的、可插拔式的服务插件。针对可扩展性,分布式系统服务需要业务无状态性、数据共享性和运行独立性等特点。

第二,分布式系统需要完善的健壮性。分布式不同于单机应用(服务调用结果明确,失败或成功),分布式服务调用会出现未知状态(调用结果成功与否未知),需要考虑各种异常场景以及异常组合造成业务极其复杂。在开发过程中,要从用户角度出发,让用户的每次请求都有明确的处理结果返回(不管是系统自动处理还是人工干预),形成业务闭环。

第三,分布式系统需要完善的日志记录。分布式系统应用场景极其复杂,内部运行状况动态变化。一旦系统出现异常,需要查找调用轨迹极有可能覆盖众多服务。如果没有完善的日志记录系统,会让问题排查起来相当困难,准确率低、效率更低。完善的日志记录应该包括:标准化日志记录规则、完善的业务调用链日志查询、可定制化轨迹日志查询、以及用户友好的日志查询操作界面。

第四,分布式系统需要完善的安全机制。分布式系统提供了各个业务应用需要的数据服务提供实例。完善的安全机制能有效保障业务数据的安全。研发时考虑搭建良好的用户角色权限机制,敏感数据的加解密机制,网络通信方式的保密性以及黑客攻击(例如XSS、SQL注入攻击,DOS等)防范机制。从技术漏洞、数据载体、通信方式、业务漏洞、体系风险等各个方面统筹谋划,做好安全处理。

第五,分布式系统需要完善的运行防范机制。分布式系统的出现就是为了解决日益增长的流量处理需求和单一物理机器处理能力不足产生的矛盾。访问流量的抖动、单一服务能力的变化都是影响系统运行稳定的重大因素。在开发过程中,我们需要假定各种异常场景并做相关场景处理,例如服务流控、容错降级等多种机制。

第六,分布式系统需要完善的测试机制。分布式系统内部调用关系极其复杂,造成测试困难,工作量大等。在开发中,需要在关键点(例如服务调用点、服务访问处理、异常场景处理)等关键节点上做好可配置(通过参数配合等)的数据MOCK机制,让测试人员可通过参数调节即可完成分布式场景各种业务异常场景测试。注意的是,最好将这些测试点开发成单独的服务(由业务框架调用),测试人员如果有研发能力,可以提供他们自己测试场景的扩展机制。

第七,分布式系统需要完善的发布上线机制。一般而言,分布式系统的业务流量都已初具规模,相关的业务迭代快速而频繁。Bug修复、新功能迭代等代码发布都会对现有生产环境稳定运行造成威胁。不仅需要在上线前做严格的测试,而且需要具有良好的上线机制,例如A/B发布机制等。

第八,分布式系统需要完善的监控机制。分布式系统面对的外部环境和内部环境都十分复杂,内部服务部件众多,任何硬件错误、软件异常、实例僵死等小概率事件在数量巨大的服务组件的基础上可能时刻发生。为保证系统的健康良好,运行稳定。需准确快速定位异常现象,问题根源,这就需要完善的监控机制。

第九,分布式系统需要良好的运行性能。分布式服务调用相比单机应用调用而言,它的延迟是比较大的,至少相差一个数量级别。并且一个应用往往需要调用数个或数十个服务实例,这对于分布式系统的调用方式、服务调用延迟等提出了更高的性能要求。作为开发人员,你需要结合业务特点,从网络通信机制,IO机制,线程并发,内存消耗,运行时耗等技术基础和性能指标等方面综合考虑。最终达到一个相对良好的运行性能。

当然,这里只是简单介绍下分布式系统开发过程需要注意的方面。并不是涉及到具体的业务处理方法,技术选型,架构选择等,例如良好的运行性能可能需要尽量避免分布式事务,尽可能用业务异步处理替代业务同步处理等。

那么,猿,你在开发分布式服务系统过程中,注意到这些了吗?

你一般如何考虑呢?

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,723评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,080评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,604评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,440评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,431评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,499评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,893评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,541评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,751评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,547评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,619评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,320评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,890评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,896评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,137评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,796评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,335评论 2 342

推荐阅读更多精彩内容

  • 本文转载自http://geek.csdn.net/news/detail/112672 WeTest导读 我们常...
    shineegirl阅读 1,540评论 0 26
  • 承载量是分布式系统存在的原因 当一个互联网业务获得大众欢迎的时候,最显著碰到的技术问题,就是服务器非常繁忙。当每天...
    XYLY阅读 1,457评论 1 48
  • 分布式系统面临的第一个问题就是数据分布,即将数据均匀地分布到多个存储节点。另外,为了保证可靠性和可用性,需要将数据...
    olostin阅读 4,547评论 2 26
  • 本文欢迎转载,转载请注明原文链接,并附作者个人信息李艳鹏。 1 背景 一致性是一个抽象的、具有多重含义的计算机术语...
    581f548ef0ec阅读 43,451评论 28 294
  • 分布式系统(Distributed System)资料 希望转载的朋友,你可以不用联系我.但是一定要保留原文链接,...
    Albert陈凯阅读 3,709评论 0 33