微服务架构带来的挑战,以及微服务的9大特性!!!

微服务是近三年来较为热门的话题,而我本人自去年接触微服务开始,就对其产生了较为浓厚的兴趣,公司也在尝试将之前的单体架构向微服务架构过渡,因此打算系统的学习一下微服务相关的知识。主要学习微服务的思想,架构设计以及SpringCloud生态的各类组件,涵盖了服务治理组件Eureka,客户端负载均衡组件Ribbon,服务容错保护组件Hystrix,声明式服务调用组件Feign,API网关治理组件Zuul,分布式配置中心组件Config,消息总线组件Bus,消息驱动组件Stream,分布式跟踪组件Sleuth等,这些几乎囊括了开发者在实施微服务中需要深入了解的各种轮子,当然在学习这些组件的同时更要理解其中的底层实现原理。

基础知识

  在学习SpringCloud具体内容之前需要了解一些微服务架构以及SpringCloud的基础知识,这些都是后续学习SpringCloud的基础,同时这里也会简单介绍SpringCloud能解决的问题,带着问题,有目的性的学习可以极大的提升学习效率。

微服务架构

  微服务一词来源于Martin Fowle写的一篇文章,开发者可以点击 这里,阅读该文章详情,阅读中文翻译请点击 这里。

  简单来说,微服务是系统架构上的一种设计风格,它的主旨是将一个原本独立的系统拆分成多个小型服务,这些小型服务都在各自独立的进程中运 行,服务之间通过基于HTTP的RESTful风格的API进行通信协作。注意被拆分的每一个小型服务都是围绕着系统中某一项或者一些耦合度较高的业务功能进行构建,并且每个服务都维护着自身的数据存储、业务开发、自动化测试案例以及独立部署机制。由于存在轻量级的通信协议作基础,因此这些微服务可以使用不同的语言来不编写。

与单体系统的区别

  在以往传统的企业系统架构中,我们针对一个复杂的业务需求通常使用对象或业务类型来构建一个单体项目。在项目中通常将需求分为三个主要部分:数据库、服务端处理、前端展现。在业务发展初期,由于所有的业务逻辑在一个应用中,开发、测试、部署都还比较容易且方便。但是随着企业的发展,系统为了应对不同的业务需求会不断为该单体项目增加不同的业务模块;同时随着移动设备的进步,前端展现模块已经不仅仅局限于Web的形式,这对于系统后端向前端的支持需要更多的接口模块。不断扩大的需求使得单体应用变得越来越臃肿,因此单体应用的缺点也越来越明显。由于单体系统部署在一个进程内,因此当我们修改了一个很小的功能,然后部署上线很可能会影响其他功能的运行。且单体应用中的各个模块的使用场景、并发量、消耗的资源类型等都是不同的,对于资源的利用又是互相影响,这样无疑给我们对于各个业务模块的系统容量的评估带来巨大的影响,这么看来尽管单体系统在初期可以很方便的进行开发和使用,但是随着系统的发展,毫无疑问其维护成本会变得越来越大,且非常难以控制。

  为了解决单体系统变得臃肿后难以维护的问题,微服务架构孕育而生。我们可以将系统中不同的功能模块拆分成多个不同的服务,这些服务都能够独立部署和扩展。由于每个服务都运行在自己的进程内,在部署上有稳固的边界,这样每个服务的更新都不会影响到其他服务的运行。同时由于各个服务均是独立部署的,因此可以更为准确的为每个服务进行性能容量评估,与此同时通过配合服务间的协作流程也可以更容易的发现系统的瓶颈位置,并给出较为准确的系统级性能容量评估。

微服务带来的挑战

  在实施微服务之前,有必要知道因为微服务的拆分而引发了诸多原本在单体应用中没有的问题和挑战:

(1)运维的新高度。 在微服务架构中,由于系统的拆分,使得运维人员需要维护的进程数量大大增加,这就要求运维人员具备一定的开发能力来编排运维过程并让它们能自动运行起来。

(2)接口的一致性

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值