关于为什么要用微服务(一)

1.序言

最近在看关于三高(高并发/高可用/高扩展)系统的文章,和解决的其中的数据一致性等问题。一直在用springcloud,却发现没有系统总结过为什么要用微服务。这篇作为一个序章,从总体来看分布式系统解决的问题,和产生的问题。

2.什么事分布式系统

分布式系统(distributed system)由多台计算机和通信的软件组件通过计算机网络连接(本地网络或广域网)组成。

3.特点

  1. 系统中涉及的各个节点并行地工作。
  2. 这些节点的宕机事件是独立的。
  3. 这些节点之间没有一个全局时钟,也就是说各个节点的本地物理时钟是有偏差的。

4.优点

  1. 可用性(容错性)
    分布式计算系统中的一个重要的优点是可靠性。一台服务器的系统崩溃并不影响到其余的服务器,仍可以正常对外提供服务。

  2. 可扩展性
    可以通过线性的增加机器资源,来应对不断增长的外部需求。

  3. 资源共享
    共享数据是必不可少的应用,如银行,预订系统。

  4. 灵活性
    由于该系统是非常灵活的,它很容易安装,实施和调试新的服务。

  5. 更快的速度
    多地部署,将用户请求按地理路由到最近机房处理。拥有多台计算机的计算能力,使得它比其他系统有更快的处理速度。

  6. 开放系统
    由于它是开放的系统,本地或者远程都可以访问到该服务。

  7. 更高的性能
    相较于集中式计算机网络集群可以提供更高的性能(及更好的性价比)。

5.带来的挑战

分布式系统最大的问题是复杂性。

  1. 数据的一致性
    考虑到大量的机器故障:宕机、重启、关机,数据可能丢失、陈旧、出错,如何让系统容纳这些问题,对外保证数据的正确性,需要相当复杂的设计。

  2. 网络和通信故障
    网络的不可靠,消息可能丢失、早到、迟到、Hang住,这给机器间的协调带来了极大的复杂度。像TCP等网络基础协议,能解决部分问题,但更多的需要系统层面自己处理。更不用说,开放式网络上可能存在的消息伪造。

  3. 管理复杂度
    机器数量到达一定数量级时,如何对他们进行有效监控、收集日志、负载均衡,都是很大挑战。

  4. 延迟
    网络通信延迟要比机器内通信高出几个数量级,而组件越多、网络跳数越多,延迟便会更高,这些最终都会作用于系统对外服务质量上。

6.总结

分布式系统能够提高系统的可用性、系统间的隔离性、横向扩展性带来更高的性能。同时也带了一些挑战,如数据一致性问题、网路故障、时延问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值