【华为网络技术大赛】微服务基础概念

Monolithic单体式架构指的是尽管是模块化逻辑,但是最终还是会打包并部署为一个单一应用。

基准代码

基准代码和应用之间总是保持一一对应的关系:一旦有多个基准代码,就不能称为一个应用,而是一个分布式系统。
多个应用共享一份基准代码是有悖于12-Factor原则的,解决的方法是将代码拆分为独立的类库,然后依靠依赖管理策略去加载他们。

依赖关系

应用程序不会隐式依赖系统级的类库。它一定通过依赖清单,确切地声明所有依赖项。
在运行过程中通过依赖隔离工具来确保程序不会调用系统中存在但清单中未声明的依赖项。

配置

配置写在环境变量中,可以非常方便的在不同的部署间做修改,环境变量和语言系统无关。不可能不小心嵌入代码库。

后端服务

12-Factor应用不会区别对待本地或第三方服务。两种都是附加资源。

Docker利用容器将资源进行有效隔离。

  • 客户端如何访问这些服务?
    APIGateway 即API网关,所有请求首先会经过这个网关,然后到达后端服务,有点类似于Facade模式。API网关作为系统接口对外的统一出口,可以减少调用方对服务实现的感知。
  • 服务之间如何通信?
    IPC -->同步调用REST 异步消息调用RPC
  • 服务怎么找?
    基本都是通过zookeeper等类似技术做服务注册信息的分布式管理
  • 服务挂了怎么办?
    分布式一个最大的特点是:网络是不可靠的。
    HYSTRIX提供高容错,如重试机制、限流、负载均衡、降级等。

hystrix对应的中文名字是“豪猪”,豪猪周身长满了刺,能保护自己不受天敌的伤害,代表了一种防御机制,这与hystrix本身的功能不谋而合,因此Netflix团队将该框架命名为Hystrix,并使用了对应的卡通形象做作为logo。
在一个分布式系统里,许多依赖不可避免的会调用失败,比如超时、异常等,如何能够保证在一个依赖出问题的情况下,不会导致整体服务失败,这个就是Hystrix需要做的事情。Hystrix提供了熔断、隔离、Fallback、cache、监控等功能,能够在一个、或多个依赖同时出现问题时保证系统依然可用。

自测题

  1. 应用想要做到持续部署就必须缩小本地与线上差异。开发人员应该反对在不同环境间使用不同的后端服务,即使适配器已经可以几乎消除使用上的差异。
  2. 微服务架构每个服务都有自己的数据库,而不像传统架构下多个服务共享一个数据库。
  1. 关于微服务12要素中的“Dependences依赖”,下列哪一项理解是不正确的?
    这一做法应用到生产和开发环境时可以不一致。
  2. 单体式应用的特点不包括下列哪一项?
    每一个单体式应用的模块都是微型六角形应用,都有自己的业务逻辑和适配器。
  3. 微服务被定义为特定背景下,为了开发出速度更快、更有弹性且用户体验更佳的应用而采用的自动化系统,下列哪一种场景环境不适合微服务?
    必须理解其他部件运作原理
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 作者简介:黄庆兵,网易蜂巢首席技术布道师,浙大硕士毕业,从事云计算、Docker、Go等相关开发及技术布道工作;喜...
    43ce3d72fadb阅读 9,465评论 0 11
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,288评论 19 139
  • 今天休息,把家里大扫除,洗了四洗衣机的衣服被子,鞋子,我是积攒了几个月才来一次大的,下午去医院看鼻子和眼睛,开了很...
    Hi_张阅读 93评论 0 0
  • 俗话说“皇帝的女儿不愁嫁”,在古时男尊女卑的那个年代,唯有与皇家公主的联姻是女尊男卑,公主永远都是下嫁,驸马始终都...
    成周子阅读 2,702评论 0 2
  • 1、不要给孩子道德绑架,要尊重孩子的选择。 起因是一位宝妈,未经孩子【初中】的允许,自作主张把孩子的书借给别人了,...
    菜问妈妈阅读 176评论 0 0