微服务架构介绍与分类「建议收藏」

微服务架构介绍与分类「建议收藏」微服务架构介绍与分类

大家好,又见面了,我是你们的朋友全栈君。

微服务是面向服务架构(SOA)的变体,使用各种相互依赖的模块来标识它们之间的相互关系,并可衡量每个模块之间的松耦合程度。

基于微服务的架构主要关注:

自然地强制执行模块化结构。
适用于持续交付软件开发过程。 
对应用程序的一小部分进行更改只需要重建和重新部署一个或少量服务
坚持诸如此类的原则 
细粒度接口(可独立部署的服务)
业务驱动的开发(例如域驱动设计)
云应用程序架构
多语言编程和持久性
轻量级容器部署
分散的持续交付
DevOps提供全面的服务监控 

将单个App开发为一套小型服务,每个小型服务都在自己的流程中运行,并与轻量级机制(通常是HTTP资源API)进行通信。这些服务围绕业务功能构建,可通过全自动部署机制独立部署。这些服务至少集中管理,可以用不同的编程语言编写,并使用不同的数据存储技术。

微服务的优点包括

    新技术和流程适应变得更加容易。您可以使用我们创建的新微服务来尝试新技术。
    更快的发布周期。
    可扩展到云。 

应用和团队的两个方面的功能分解是构建成功的微服务架构的关键。这样才能实现松耦合(REST接口)和高内聚(多个服务可以相互组合以定义更高级别的服务或应用程序)。功能分解提供了敏捷性,灵活性,可伸缩性和其他功能,但业务目标仍然是创建应用程序。

  • 聚合器微服务设计模式

第一种,也许是最常见的是聚合器微服务设计模式。在最简单的形式中,聚合器可能就是一个简单的网页,它调用多个服务来实现应用程序所需的功能。由于使用轻量级REST机制公开了每个服务(服务A,服务B和服务C),因此网页可以检索数据并相应地处理/显示数据。

  • 代理微服务设计模式

代理微服务设计模式是聚合器的变体。在这种情况下,不需要在客户端上进行聚合,但可以根据业务需要调用不同的微服务。

  • 链式微服务设计模式

链式微服务设计模式对请求产生单个合并响应。在这种情况下,来自客户端的请求由服务A接收,服务A然后与服务B通信,服务B又可以与服务C通信。所有服务可能使用同步HTTP请求/响应消息传递。

  • 共享数据微服务设计模式

微服务的设计原则之一是自治。这意味着该服务是全栈并且可以控制所有组件 – UI,中间件,持久性,事务。这允许服务是多语言,并使用正确的工具来完成正确的工作。例如,如果可以使用NoSQL数据存储,则更合适,在SQL数据库中会干扰数据独立性。

在这种设计模式中,一些在链条中的微服务可能共享缓存和数据库存储。这只有在两个服务之间存在强耦合时才有意义。有些人可能认为这是一种反模式,但在某些情况下可能需要业务需求来遵循这一点。对于基于微服务设计的绿地应用来说,这肯定是一种反模式。

  • 异步消息微服务设计模式

虽然REST设计模式非常普遍,并且很好理解,但它具有同步的限制,因此阻塞。可以实现异步,但这是以特定于应用程序的方式完成的。由于这一点,一些微服务架构可能会选择使用消息队列而不是REST请求/响应。

Spring Boot

Spring Boot是一个旨在简化新服务创建的框架。对于最简单的用例,所需的库已经捆绑在所谓的Spring starter配件组合和版本中。我们不必将应用程序部署到应用服务器中,而是独立运行我们的应用程序或在Docker容器中运行,因为应用已经包含服务器。Spring Boot可用于设置基于REST的微服务。

Spring Boot针对大多数用例简化了构建基于Java的微服务。与Dropwizard等框架不同,它更易于使用,并提供更丰富的功能集。Spring Boot提供了大量额外的库和集成,如Ribbon,Zuul,Hystrix,与MongoDB,Redis,GemFire,Elasticsearch,Cassandra或Hazelcast等数据库的集成。

借助Maven和Gradle,Java开发人员可以支持功能强大且受到广泛支持的构建系统,这些构建系统比Play Framework等框架的专用构建系统更常见,更易于集成到现有结构中。与传统的Web应用程序相比,Spring Boot很精简。对于大多数项目,向项目添加依赖项足以从头开始获得良好项目起步,无需调整默认配置。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/106585.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 元素守恒计算方法_leetcode免费吗

    元素守恒计算方法_leetcode免费吗给定一个整数数组 nums,按要求返回一个新数组 counts。数组 counts 有该性质: counts[i] 的值是 nums[i] 右侧小于 nums[i] 的元素的数量。示例:输入:nums = [5,2,6,1]输出:[2,1,1,0] 解释:5 的右侧有 2 个更小的元素 (2 和 1)2 的右侧仅有 1 个更小的元素 (1)6 的右侧有 1 个更小的元素 (1)1 的右侧有 0 个更小的元素提示:0 <= nums.length <= 10^5-10^4

    2022年8月8日
    5
  • 图标变成了一张白纸_文件图标变成白纸

    图标变成了一张白纸_文件图标变成白纸最近很多用户问怎么安装纯净版的win10系统,那么今天针对这个问题,和大家分享一下超详细的纯净版win10安装教程,手把手教学,大伙们赶紧收藏哦!如何安装?这一完整教程分为4个部分:准备工作→系统安装→设置桌面→驱动安装重点开始了,请做好笔记哦!Part1:准备工作1、制作U盘启动盘(PE系统的引导工具)第一步:准备一个8G以上的U盘,并做好U盘重要资料的备份,因为在制作的过程中U盘会…

    2022年10月19日
    4
  • 激光雷达和超声波雷达区别_雷达是超声波还是电磁波

    激光雷达和超声波雷达区别_雷达是超声波还是电磁波转自:http://www.sohu.com/a/201826967_524185不知何时,自动驾驶技术从电影中跳出来,直接被拉到人们视野中。不过,去年特斯拉却因为几起自动驾驶事故,官网不得不把自动驾驶字眼改为辅助驾驶。本期《汽车总动员》讨论的不是自动驾驶,而是被称为自动驾驶汽车“眼睛”的雷达。目前主流的“眼睛”有四类——毫米波雷达、激光雷达、超声波雷达、摄像头。他们各自都有自己的特点,比如摄像头…

    2025年10月31日
    2
  • lib vs 生成pdb_pdb文件 VS c++编译[通俗易懂]

    lib vs 生成pdb_pdb文件 VS c++编译[通俗易懂]使用VS-debug模式下编译的时候,经常出现以下问题:’Dlib.exe'(Win32):Loaded’D:\c++\Dlib\x64\Debug\Dlib.exe’.Symbolsloaded.’Dlib.exe'(Win32):Loaded’C:\Windows\System32\ntdll.dll’.CannotfindoropenthePDBfile.’Dl…

    2022年5月18日
    49
  • 十进制小数转化为二进制小数方法_c语言二进制

    十进制小数转化为二进制小数方法_c语言二进制该楼层疑似违规已被系统折叠隐藏此楼查看此楼#include#include#include#defineNUM2#defineZERO0.000001intPrnMainMenu(void);voidProcessLoop(void);voidtwo(void);voidten(void);inta,b[10],i=0,c=0;voidinteger(intn)//…

    2022年9月24日
    5
  • kubeedge 安装部署(适用于Ubuntu)「建议收藏」

    kubeedge 安装部署(适用于Ubuntu)「建议收藏」kubeedge安装部署(适用于Ubuntu)基础环境:安装了Ubuntu18.04操作系统的两台虚拟机(查看操作系统版本命令:cat/etc/os-release)部署kubeedge1.1.0版本根据keadm源码安装部署步骤整理(无法直接使用keadm工具完成部署)一、配置源,写入以下内容到/etc/apt/sources.listroot@ubuntu:…

    2022年7月21日
    28

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号