前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >分布式系统的那些事儿(一)

分布式系统的那些事儿(一)

作者头像
风间影月
发布2018-04-04 17:15:42
6420
发布2018-04-04 17:15:42
举报
文章被收录于专栏:BeJavaGod

巨石应用在如今互联网+时代逐渐淘汰,而分布式系统,集群,微服务可谓现在的流行趋势。那么近期花点时间来讲讲分布式系统吧。

什么是分布式系统,很多人一直不理解,只知道把系统分布式部署就行了,但是没有做过这样的系统,也没在里面写过代码,当然连部署都不知道,那么就更加的模糊了。

笼统而言,分布式系统从软件上来讲,对于用户来说是一个不可分割的整体。从硬件上讲就是多台独立的服务器。举个栗子,我们在访问淘宝的时候,我们不会去关心淘宝后台代码是怎么实现的,是如何部署的,我们唯一想要的就是完成购物流程,买到心仪的商品,整个过程流畅,用户体验好,网页打开快速,各方面人性化即可。而从硬件上来讲呢,用户完全不需要知道,比如在某个时候真正更新维护系统,而且却不影响用户的购物流程。就像王者荣耀那样,很多时候这个游戏在更新的时候不影响游戏,那么这就是硬件分布式做的牛逼的地方了。而很多游戏在更新的时候用户是必须要下线的。

既然有分布式系统那么肯定也会有集中式系统,浅白点讲就是文中一开始讲的巨石应用,也就是说整个软件就一个war包,所有功能都在里面,十分大,对于单台计算机的运算能力性能要求十分高。如今很多的企业级后台应用都是这样的。这样的应用显然已经不符合如今的互联网时代,所以要做SOA或者微服务进行拆分这样的工作流也是十分的巨大。而在做拆分的这个过程好不夸大的讲需要半年,甚至1年,如果再加上期间人员流动,尤其新人,在不懂业务的情况下是完全不会做的。

那么有些人会问了,现在要开发一个系统,到底是搭建分布式呢还是单一web应用呢?那么我的回答是看情况,如果预计这个系统将会承载很多的用户量,大并发质量的,那么肯定要做分布式,如果对于企业来讲,仅仅只是固定用户群体,比如特定的VIP用户,对于这样的系统设计为单一也没事。

两种系统的优缺点,显而易见了,单一应用维护起来相对简单,一个包上传重启即可。而分布式环境下对运维的能力有一定的考验。此外,单点故障的问题分布式是不存在的,单一应用的服务器挂了那么整个网站就挂了,这就是所谓的高可用。

设计分布式系统有多复杂?那么大致可以分为以下几点:

  1. 分布式权限如何控制,包括单点登录
  2. 如何从单一系统拆分为多个子系统
  3. 各个系统之间如何通信?RPC还是Restful?
  4. 如何保证系统通信的安全,如何不被拦截
  5. 如何保证系统的高可用
  6. 分布式事务如何实现?数据的最终一致性如何解决?
  7. 如何监控各个子系统。
  8. 并发的时候如何考虑全局的所有子系统?(并发一直以来都是一个很大的概念)
  9. 如何防范各类网络攻击

先写到这里吧,接下来的文章都会围绕分布式来讲。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-05-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 BeJavaGod 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档