`
stenpher
  • 浏览: 11284 次
社区版块
存档分类
最新评论

微服务学习1

阅读更多

单体式应用的问题
1 一个简单的应用会随着时间推移逐渐变大。变成一个又大又复杂的怪物,开发团队肯定很痛苦。敏捷开发和部署举步维艰,因为这个应用太复杂,以至于任何单个开发者都不可能搞懂它。
2 单体式应用也会降低开发速度。应用越大,启动时间会越长。
3 复杂而巨大的单体式应用也不利于持续性开发。持续部署也会很艰难。
4 单体式应用在不同模块发生资源冲突时,扩展将会非常困难。比如,一个模块完成一个CPU敏感逻辑,应该部署在AWS EC2 Compute Optimized instances,而另外一个内存数据库模块更合适于EC2 Memory-optimized instances。然而,由于这些模块部署在一起,因此不得不在硬件选择上做一个妥协。
5 单体式应用另外一个问题是可靠性。因为所有模块都运行在一个进程中,任何一个模块中的一个bug,比如内存泄露,将会有可能弄垮整个进程。
6 最后,单体式应用使得采用新架构和语言非常困难。比如,设想你有两百万行采用XYZ框架写的代码。如果想改成ABC框架,无论是时间还是成本都是非常昂贵的,即使ABC框架更好。
总结一下:一开始你有一个很成功的关键业务应用,后来就变成了一个巨大的,无法理解的怪物。因为采用过时的,效率低的技术,使得雇佣有潜力的开发者很困难。应用无法扩展,可靠性很低,最终,敏捷性开发和部署变的无法完成。

什么是微服务
一个微服务一般完成某个特定的功能,比如下单管理、客户管理等等。每一个微服务都是微型六角形应用,都有自己的业务逻辑和适配器。一些微服务还会发布API给其它微服务和应用客户端使用。其它微服务完成一个Web UI,运行时,每一个实例可能是一个云VM或者是Docker容器。
每一个后台服务开放一个REST API,许多服务本身也采用了其它服务提供的API。
所有服务都是采用异步的,基于消息的通讯。
不像传统多个服务共享一个数据库,微服务架构每个服务都有自己的数据库。
每种服务都有自己的数据库,另外,每种服务可以用更适合自己的数据库类型,也被称作多语言一致性架构。
表面上看来,微服务架构模式有点像SOA,他们都由多个服务构成。但是,可以从另外一个角度看此问题,微服务架构模式是一个不包含Web服务(WS-)和ESB服务的SOA。微服务应用乐于采用简单轻量级协议,比如REST,而不是WS-,在微服务内部避免使用ESB以及ESB类似功能。微服务架构模式也拒绝使用canonical schema等SOA概念。
微服务的目的是有效的拆分应用,实现敏捷开发和部署。

微服务架构的好处
1 通过分解巨大单体式应用为多个服务方法解决了复杂性问题。单个服务很容易开发、理解和维护。
2 这种架构使得每个服务都可以有专门开发团队来开发。开发者可以自由选择开发技术,提供API服务。这种自由意味着开发者不需要被迫使用某项目开始时采用的过时技术,他们可以选择现在的技术。
3 微服务架构模式是每个微服务独立的部署。快速的部署变化。微服务架构模式使得持续化部署成为可能。
4 微服务架构模式使得每个服务独立扩展。你可以根据每个服务的规模来部署满足需求的规模。甚至于,你可以使用更适合于服务资源需求的硬件。

微服务架构的不足
1 『微服务』强调了服务大小,可能会导致很大数量的微服务产生。
2 微服务应用是分布式系统,由此会带来固有的复杂性。开发者需要在RPC或者消息传递之间选择并完成进程间通讯机制。更甚于,他们必须写代码来处理消息传递中速度过慢或者不可用等局部失效问题。但相对于单体式应用中通过语言层级的方法或者进程调用,微服务下这种技术显得更复杂一些。
3 另外一个关于微服务的挑战来自于分区的数据库架构。最终你不得不使用一个最终一致性的方法,从而对开发者提出了更高的要求和挑战。
4 测试一个基于微服务架构的应用也是很复杂的任务。
5 微服务架构模式应用的改变将会波及多个服务。
6 部署一个微服务应用也很复杂,成功部署一个微服务应用需要开发者有足够的控制部署方法,并高度自动化。

 

分享到:
评论

相关推荐

    微服务学习微服务学习微服务学习微服务学习1

    在这个微服务学习资料包中,我们主要关注的是Java平台上的实现,特别是阿里巴巴的微服务解决方案。 首先,"00 微服务架构介绍.pdf"可能包含了微服务架构的基本概念和优势。它可能会涵盖为什么从单体应用转向微服务...

    微服务学习微服务学习微服务学习微服务学习4

    微服务学习微服务学习微服务学习微服务学习4

    微服务学习微服务学习微服务学习微服务学习3

    微服务是一种现代软件开发的方法论,它提倡将单一应用程序拆分为一组小的服务,每个服务运行在...通过学习这些内容,不仅可以理解微服务架构中的关键组件,还能掌握如何有效地实施和管理微服务的流量控制和分布式事务。

    微服务学习微服务学习微服务学习微服务学习2

    微服务是一种架构模式,它将单一应用程序分解为一组小的服务,每个服务运行在其自己的进程中,服务之间通过轻量级通信机制(通常是HTTP RESTful API)...通过学习这些内容,开发者能够构建出更健壮、灵活的微服务体系。

    SpringCloud微服务学习.zip

    1. **SpringBoot基础** 在讨论SpringCloud之前,我们先要了解SpringBoot。它是一个用于简化Spring应用初始搭建以及开发过程的框架。SpringBoot通过“约定优于配置”的原则,提供了一种快速启动和运行Spring应用的...

    微服务项目学习资料(学习使用)

    "微服务项目学习资料" 微服务架构是指将一个应用程序拆分成多个小型服务的架构方式,每个服务都可以独立发展、测试和部署。微服务架构的优点包括提高系统的灵活性、可扩展性和可靠性。 微服务架构的核心概念包括:...

    微服务学习开发案例.zip

    在"微服务学习开发案例.zip"这个压缩包中,包含了三份2019年的教材,分别是“技术实务教材”、“综合能力教材”和“案例分析教材”。这些教材可能是为了帮助初学者系统地了解和掌握微服务相关的技术和实践。下面将...

    微服务学习笔记

    ### 微服务学习笔记 #### 一、微服务概述 微服务架构作为一种现代软件开发模式,强调将一个大型的应用程序拆分成多个小型、独立的服务,每个服务都可以独立部署、管理和扩展。这种架构风格有助于提高软件的灵活性...

    微服务学习

    微服务是一种架构设计模式,它提倡将单一...对于想要深入微服务领域的学习者来说,这是一份不可多得的资料,值得仔细研读并应用于实际项目中。通过学习这些知识,你可以提升自己的技能,更好地应对现代软件开发的挑战。

    微服务学习代码.zip

    本资源"微服务学习代码.zip"提供了关于微服务实现的示例代码,主要涉及到Spring Cloud Alibaba中的几个关键组件:Nacos、Gateway和Sentinel。 Nacos是阿里巴巴开源的一款云原生应用配置管理和服务发现平台。它主要...

    微服务架构 学习笔记

    微服务架构 学习笔记 微服务架构 学习笔记 微服务架构 学习笔记

    微服务学习资料 帮我们入门微服务的相关知识

    1. 什么是微服务 在介绍微服务时,首先得先理解什么是微服务,顾名思义,微服务得从两个方面去理解,什么是"微"、什么是"服务", 微 狭义来讲就是体积小、著名的"2 pizza 团队"很好的诠释了这一解释(2 pizza 团队...

    基于Spring Boot和Spring Cloud实现微服务架构学习

    基于Spring Boot和Spring Cloud实现微服务架构学习

    微服务学习笔记.md

    微服务学习笔记.md

    SpringCloud微服务框架学习源码

    本项目包含一整套SpringCloud微服务框架学习的源码,有兴趣的同学可以结合本人的博客文章系统的学习怎样实现一个微服务框架的搭建,内容包括Eureka服务的注册发现及Eureka集群的实现、客户端负载均衡Ribbon、接口式...

    我的微服务学习测试dddddddddddddddddd

    在这个"我的微服务学习测试dddddddddddddddddd"项目中,我们很可能是对微服务架构和测试技术进行实践和学习。 首先,让我们深入了解一下微服务架构的关键概念: 1. **服务自治**:每个微服务都有自己的数据库和...

    微服务学习资料相关c++

    1. **微服务概念**: - 微服务的核心思想是"单一职责原则",每个服务都应有一个明确的业务边界。 - 服务之间的通信通常通过HTTP/RESTful接口或消息队列进行,以保持松耦合。 - 微服务强调自动化部署,使得单个...

    基于Vue的微服务在线学习平台前端设计源码

    这是一个基于Vue的微服务在线学习平台前端设计,使用Vue、JavaScript、CSS和HTML语言开发,包含148个文件。...该项目是一个基于微服务的在线学习平台前端代码,适合用于个人学习和实践Vue的开发技术。

Global site tag (gtag.js) - Google Analytics