微服务架构2024年最新解

让我们在单机体系结构的上下文中讨论一个电子商务商店的示例:

微服务架构2021最新解(建议收藏)

在任何电子商务应用程序中,都有一些标准功能,如搜索、评论和评级以及支付。客户可以使用浏览器或应用程序访问这些功能。当电子商务网站的开发者部署应用程序时,它是一个单一的单片单元。不同功能(如搜索、评论和评级以及支付)的代码在同一台服务器上。要扩展应用程序,需要运行这些应用程序的多个实例(服务器)。

什么是微服务架构?

=========

微服务体系结构是一种体系结构开发风格,它允许将应用程序构建为为业务领域开发的小型自治服务的集合。它是结构风格体系结构的变体,有助于将应用程序安排为松散耦合的服务集合。微服务体系结构包含细粒度服务和轻量级协议。

让我们举一个用微服务架构开发的电子商务应用程序的例子。在这个微服务体系结构示例中,每个微服务都专注于单个业务能力。搜索、评级和审查以及支付都有自己的实例(服务器),并相互通信。

微服务架构2021最新解(建议收藏)

在单片体系结构中,所有组件合并成一个模块。但是,在微服务体系结构中,它们被分散到单独的模块(微服务)中,这些模块相互通信,如上面的微服务示例所示。

微服务之间的通信是一种无状态通信,其中每对请求和响应是独立的。因此,微服务可以轻松地进行通信。在微服务体系结构中,数据是联合的。每个微服务都有其独立的数据存储。接下来在这个Java微服务文章中,我们将学习微服务和单片体系结构之间的区别。

微服务与单机体系结构

==========

微服务

单机体系结构

整个应用程序的每个单元都应该是最小的,并且应该能够实现一个特定的业务目标。

所有业务目标的单一代码库

服务启动比较快

服务启动需要更多时间

故障隔离很容易。即使一个服务停止,另一个也可以继续工作。

故障隔离困难。如果任何特定功能不起作用,整个系统就会停止工作。为了处理这个问题,应用程序需要重新构建、重新测试和重新部署。

所有的微服务都应该是松散耦合的,这样在一个微服务中所做的更改就不会影响另一个微服务。

单片结构是紧密耦合的。一个代码模块中的更改会影响另一个模块

企业可以将更多资源部署到产生更高投资回报率的服务中

因为服务不是孤立的,所以不可能单独分配资源

可以为经常使用的服务分配更多的硬件资源。在上面的电子商务示例中,与支付相比,更多的用户查看产品列表和搜索。因此,可以为搜索和产品列表微服务分配更多的资源。

应用程序扩展既有挑战性,也有浪费性。

微服务始终保持一致性和持续可用性。

开发工具负担过重,因为过程需要从头开始。

数据是联合的。这允许单个微服务采用最适合其需求的数据模型。

数据是集中的。

小型专注团队。并行快速发展

需要庞大的团队和大量的团队管理工作

一个微服务的数据模型的更改不会影响其他微服务。

数据模型的更改会影响整个数据库

使用定义良好的接口与其他微服务交互

不适用

微服务的工作原理是专注于产品,而不是项目

把重点放在整个项目上

代码基之间没有交叉依赖关系。您可以为不同的微服务使用不同的技术。

一个函数或程序依赖于其他函数或程序。

微服务挑战

=====

  • 微服务相互依赖,它们必须相互通信。

  • 与单机系统相比,使用不同编程语言开发的监控服务更多。

  • 由于它是一个分布式系统,因此它本身就是一个复杂的模型。

  • 不同的服务将有其独立的机制,导致非结构化数据占用大量内存。

  • 需要有效地管理和团队合作来防止连锁问题

  • 当一个问题在一个版本中消失,并在最新版本中返回时,重新生成它将是一项困难的任务。

  • 独立部署与微服务是复杂的。

  • 微服务架构带来了大量的操作开销。

  • 向系统中添加新服务时,很难管理应用程序

  • 需要大量熟练的专业人员来支持异构分布的微服务

  • 微服务成本高昂,因为您需要为不同的业务任务维护不同的服务器空间。

SOA与微服务

=======

SOA服务在组织中由作为目录列表的注册表来维护。应用程序需要在注册表中查找服务并调用服务。

在另一个世界里,SOA就像一个管弦乐队,每个艺术家都在用自己的乐器表演,而音乐总监则给所有人下达指令。

另一方面,微服务是一种面向服务的体系结构风格,其中应用程序被构建为不同较小服务的集合,而不是一个软件或应用程序。

微服务就像一个舞蹈团,每个舞者都是独立的,知道他们需要做什么。所以,如果他们错过了一些步骤,他们知道如何回到正确的顺序。现在在这个微服务体系结构教程中,让我们了解SOA和微服务之间的区别。

下面是SOA和微服务之间的详细比较:

参数

SOA

微服务

设计类型

在SOA中,软件组件以服务的形式暴露于外部世界以供使用。

微服务是SOA的一部分。它是SOA的一个实现。

依赖

业务单位是独立的。

它们相互独立。

软件大小

软件规模比任何传统软件都大

在微服务中,软件的规模总是很小的

技术栈

与微服务相比,技术层次更低。

微服务技术堆栈可能非常大

申请的性质

整体的

全栈

独立和专注

SOA应用程序是为执行多个业务任务而构建的。

它们是为执行单个业务任务而构建的。

部署

部署过程非常耗时。

部署简单且耗时较少。

成本效益

更具成本效益。

成本效益较低。

可扩展性

与微服务相比更少。

高度可扩展。

业务逻辑

业务逻辑组件存储在单服务域简单有线协议(带XMLJSON的HTTP)中API由SDK/客户端驱动

业务逻辑可以跨域、跨企业服务总线,就像服务中间件之间的层一样

微服务工具

=====

1. Wiremock:测试微服务

WireMock是一个灵活的库,用于存根和模拟web服务。它可以配置在收到特定请求时由httpapi返回的响应。它也用于测试微服务。

2. Docker

Docker是一个开源项目,它允许我们使用容器创建、部署和运行应用程序。通过使用这些容器,开发人员可以将应用程序作为单个包运行。它允许您在一个包中提供库和其他依赖项。

3. Hystrix

Hystrix是一个容错java库。此工具设计用于在分布式环境(如微服务)中分离对远程服务、系统和第三方库的访问点。它通过隔离失败的服务和防止失败的级联效应来改进整个系统。

微服务体系结构的最佳实践
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

最后

Java架构进阶面试及知识点文档笔记

这份文档共498页,其中包括Java集合,并发编程,JVM,Dubbo,Redis,Spring全家桶,MySQL,Kafka等面试解析及知识点整理

image

Java分布式高级面试问题解析文档

其中都是包括分布式的面试问题解析,内容有分布式消息队列,Redis缓存,分库分表,微服务架构,分布式高可用,读写分离等等!

image

互联网Java程序员面试必备问题解析及文档学习笔记

image

Java架构进阶视频解析合集
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
转存中…(img-XHX83JAs-1713682820559)]

Java架构进阶视频解析合集
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

  • 30
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值