zoukankan      html  css  js  c++  java
  • SpringCloud Netflix(一) :微服务架构

    什么是微服务架构

    简而言之,微服务架构风格就是将单一应用的开发分为多个小的服务,每个小的服务在自己的进程中运行并使用轻量级机制进行通信(通常是一个HTTP API源),这些服务围绕业务性能进行构建,并且通过完全自动化的部署机制独立的部署。这些只需要最低限度的集中管理的服务,可以使用不同的编程语言编写,以及使用不同的数据存储技术。---- Martin Fowler的博客

    ( 单体架构 )

    单体架构

    ( 微服务架构 )

    微服务架构

     

    微服务架构优点

    • 解决了代码臃肿的复杂问题。它把可能会变得庞大的单体应用程序分解成一套服务。虽然功能数量不变,但是应用程序已经被分解成可管理的块或者服务,个体服务能被更快地开发,并更容易理解与维护。

    • 分割明确,使得保持团队之间的界限变得容易。微服务架构使整个系统的分工更加明确,责任更加清晰,每个人专心负责为其他人提供更好的服务。在单体应用的时代,公共的业务功能经常没有明确的归属。最后要么各做各的,每个人都重新实现了一遍;要么是随机一个人做到他负责的应用里面。

    • 服务可以独立部署。如果你的应用由单个进程中的多个库组成,则对单个组件的任何更改都将导致不得不重新部署整个应用。但是,如果将应用分解为多个服务,你可以期望单个服务的更改只需要重新部署该单个服务即可。

    微服务架构缺点

    • 微服务架构整个应用分散成多个服务,定位故障点非常困难。

    • 稳定性下降。服务数量变多导致其中一个服务出现故障的概率增大,并且一个服务故障可能导致整个系统挂掉。事实上,在大访问量的生产场景下,故障总是会出现的。

    • 服务数量非常多,部署、管理的工作量很大。

    • 服务拆分后,几乎所有功能都会涉及多个服务。原本单个程序的测试变为服务间调用的测试。测试变得更加复杂。

    微服务架构四大问题

    1. 客户端如何访问这么多的服务器

      通过API网关

    2. 服务与服务之间如何通信

      同步通信-HTTP/RPC

      异步通信-消息队列 kafka RabbitMQ RocketMQ

    3. 这么多服务,如何管理

      服务治理

      服务注册与发现

      • 基于客户端的服务注册与发现 Apache Zookeeper

      • 基于服务端的服务注册与发现 Netflix Eureka

    4. 服务挂了,怎么办

      • 重试机制

      • 服务熔断

      • 服务降级

      • 服务限流

     微服务结构

    我的个人博客站

  • 相关阅读:
    Delphi中WebBbrowser的编程 转
    博客园设置目录
    iTerm
    python
    谷歌浏览器插件的导出导入
    Chapter10 属性
    WPF之Binding
    ASP.NET 路由系统
    Silverlight中使用Application.GetResourceStream方法加载资源时得到的总是null
    基于IoC的ControllerFactory
  • 原文地址:https://www.cnblogs.com/gaofei200/p/12859047.html
Copyright © 2011-2022 走看看