在这些条件的限制下,分布式系统在互联网生态中的优势不言而喻,组织灵活,扩展方便,容错性强,而且可以利用廉价机器,降低成本,保证企业的竞争力。然而凡是分布式系统也并非十全十美,atv,它仍然逃不出CAP的宿命,就看你是选择Availability还是选择Consistency。保证可用性,就是更佳考虑用户的感受,需要在用户可以忍受的一定时间内返回结果,可以成功,也可以失败,至少让用户知道你还活着,但它往往需要在一致性上做出妥协,因为分布式节点之间的沟通也需要时间,如果在短时间内就要返回结果,那么节点之间的一致性就很难得到保证;相反如果要保证一致性,就需要在可用性上做出让步,那就需要等分布式节点之间沟通完成之后,才能向用户返回结果,而期间可能会花费大量的时间,让用户等地不耐烦。选择可用性的有亚马逊家的Dynamo、FaceBook家的Cassandra等。保证一致性的有Google家的BigTable,以及MongoDB等。当然还有一些折衷的选择方案,如最终一致性,它既考虑了用户感受可以在短时间内返回结果,j2直播,又可以保证数据的最终状态,在一些实时性要求不苛刻的系统中已经得到广泛应用。如DNS系统就是一个很好的例子。 CSDN:分布式系统的架构体系很庞大,包括传统的基于对象的体系结构、SOA,也包括最近比较火的RESTful风格架构、微服务、容器技术、Serverless架构等,这一块您研究比较深的是?有哪些心得和体会可分享? 帅翔:其实SOA、RESTful、微服务、Serverless之类的架构,从架构来说,都差不多,早期使用SOA,以及后来的微服务还是无服务,都是为了从远程获取服务,只是方法和粒度上发生了变化,表现的越来越轻量,更加倾向于分布式,去中心化。不能说微服务,无服务这是都是新出来的技术概念,就很高端,每个架构都有合适它的业务,如果业务在发展的初期一些很简单的集中式架构就能很好的满足需求,随着业务的不断增长,可能需要SOA这些RPC框架来提供分布式服务,再到后期,可以抽取其中的核心服务,构成微服务,有针对性的来提高性能,加强系统的稳定性,由于服务之间是独立存在的,方便升级维护。
服务架构的发展 我们现在主要通过Restful框架来提供接口服务,目前看来,稳定性,效率,都还不错,接口开发方便,而且各个接口服务之间相互独立,互不影响,有效的强化了业务系统的稳定性。 CSDN:分布式监控方面常用的技术,也包括Nagios、Zabbix、Consul、ZooKeeper等,在监控方面有什么心得? 帅翔:在分布式系统中,如果保证各个节点之间协同工作非常重要,Zookeeper、Chubby等就是在系统中充当这样一个统筹全局的角色,保证系统中的各个节点有条不紊的完成任务。在我们的分布式缓存系统Lest中也有一个类似的角色——Lax,Lest可以根据key来Lax获取当前的最新ID,它用于保证各Lest节点间版本的一致性。Lax本身也是分布式的,因此它的性能和可靠性可以得到保证。Lax强调的是一致性,因此严格意义上来说,它是一个CP系统。不过我们通过NWR策略来改善了它的可用性。 CSDN:本次在SDCC 2017·深圳站上分享的主要内容是?会给受众带来什么? 帅翔:本次SDCC大会上,我将会跟大家分享我们团队最近研发的一个有趣的分布式缓存系统。如今市面上比较流行的缓存系统,如Redis等都是基于内存的,因此在做全量缓存时需要耗费大量内存。我们在保证基本性能需求的情况下,开发了一款去内存的分布式缓存系统,毕竟目前内存比磁盘要贵的多。
SDCC 2017?深圳站将于2017年6月10-11日登陆深圳,拥有互联网应用架构实战峰会、大数据技术实战峰会两大峰会,秉承干货实料的内容原则,汇聚业内顶尖架构师和数据技术专家,共话架构、大数据热点话题,深度解析技术难点和落地思考,带你高台起步,走近技术圈的浮生万象。八折抢票通道现已开启,详情点击「阅读原文」。 (责任编辑:本港台直播) |