微服务架构路线

news2024/11/19 21:29:41

一、我为什么选择微服务架构?

众所周知,单体应用程序,由于其种种不足,几乎不支持敏捷方法。如果你想为一个大型或复杂的业务创建一个软件项目,最好从微服务架构开始。

微服务架构是一种灵活的架构,可以显著性地提高应用程序灵活性、可扩展性等。

二、微服务架构路线 

据我了解很多开发者,想知道他们应该如何开始微服务架构旅程,虽然有成千上万的资源可以使用,但是资源到处分散。我决定通过为微服务架构学习定义路线图,使这段旅程更加清晰。

1、基本思路

基于微服务的架构通常有几个独立的单元,它们协同工作以接收和处理各种请求。

例如,如果你决定实现一个微服务架构,你应该熟悉应用程序生命周期中的各种关注点,如持久化、日志记录、监控、负载均衡、缓存等,此外你还应该知道哪些哪些工具比较好或哪些堆栈更适合你的应用程序。

2、Docker 

Docker 是一个开源平台,用于容器化你的应用程序,其中包含你的应用程序在各种环境中运行所需的类库和依赖项。在 Docker 的帮助下,开发团队能够将应用程序打包到容器中。

我为什么要使用它:

实际上,Docker 是容器化应用程序的哪些工具比较好之一,你也可以在不使用 Docker 的情况下创建容器,Docker 的真正好处是使这个过程更容易、更安全、更简单。

3、容器编排

在容器化应用程序后,你将需要一些哪些工具比较好来管理容器化应用程序,以执行一些手动和自动操作,例如水平扩展。

我为什么要使用它:

这些哪些工具比较好为你的应用程序管理提供一些服务,例如自动负载均衡,保证服务的高可用性。

这种服务是通过定义多个管理器节点来完成的,如果一个节点管理器出现任何故障,其他管理器可以保持应用程序服务可用。

哪些工具比较好:

Kubernetes or K8s

4、API网关

API 网关可以被视为一种充当你的应用程序服务和不同客户端之间的中间件。API 网关可以管理许多事情,例如:

Routing :网关接收所有 API 请求并将它们转发到目标服务。

Logging :你将能够在一处记录所有请求。

Authorization: 检查你作为用户是否有资格访问该服务,如果没有,可以拒绝该请求

Performance profiling:你可以估计每个请求的执行时间并检查你的应用程序瓶颈。

Caching:通过在网关级别处理缓存,你将消除服务上的大量流量。

事实上,它是作为一个反向代理工作的,客户端只需要知道你的网关,应用服务就可以隐藏起来,不直接向其他系统暴露。

我为什么要使用它:

如果没有 API 网关,你可能需要在每个服务中做一些横切关注点,例如,如果你想记录服务的请求和响应。此外,如果你的应用程序由多个服务组成,你的客户端需要知道每个服务地址,并且在更改服务地址的情况下,应该更新多个地方。

哪些工具比较好:

Kong,Ocelot

5、负载均衡

我们选择微服务架构最重要的原因是可扩展性,这意味着我们将能够通过运行更多服务实例来处理更多请求,但问题是,哪个实例应该接收请求,或客户端如何知道哪个服务实例应该处理请求?

这些问题的答案是负载均衡。负载均衡是高可用网络基础架构的关键组件,通常用于将工作负载分布到多个服务器来提高网站、应用、数据库或其他服务的性能和可靠性。

我为什么要使用它:

为了扩展你的独立服务,你需要运行多个服务实例。使用负载均衡器,客户端不需要知道服务的正确实例。

哪些工具比较好:

Traefik , NGINX,Seesaw

6、服务发现 

随着你的应用服务的数量越来越多,服务需要知道彼此的服务实例地址,但是在有很多服务的大型应用中,这是无法处理的。因此我们需要服务发现,它负责提供应用程序中所有组件的地址,它们可以轻松地向服务发现系统发送请求并获取可用的服务实例地址。

我为什么要使用它:

当你的应用程序中可以有多个服务时,服务发现对于你的应用程序来说是必不可少的。你的应用服务不需要知道每个服务实例地址,这意味着服务发现为你铺平了道路。

哪些工具比较好:

Consul,Zookeeper,Eureka,Nacos,etcd和Keepalived

7、事件总线

在微服务架构模式中,你将使用两种不同类型的通信,同步通信以及异步通信。同步通信是指服务之间通过 HTTP 或 GRPC 相互调用。异步通信意味着服务通过消息总线或事件总线相互交互,这意味着服务之间没有直接连接。

你的架构可以同时使用两种通信方式,例如:在在线商店示例中,你可以在订单注册时发送消息,并且订阅了特定频道的服务将收到该消息。但有时你可能需要一些实时的查询,例如:你需要知道一个物品的数量,你可能会在服务之间使用 GRPC 或 HTTP 调用来获取响应。

我为什么要使用它:

如果你想要一个包含多个服务的可扩展应用程序,你将遵循的原则之一是创建松散耦合的服务,这些服务通过事件总线相互交互。此外,如果你需要创建一个能够插入新服务以接收一系列特定消息的应用程序,则需要使用事件总线。

哪些工具比较好:

RabbitMQ,Kafka

8、日志记录

使用微服务架构模式时,最好将服务日志集中起来。这些日志将用于调试问题或根据其类型聚合日志以供分析使用。

我为什么要使用它:

系统调试时,如果没有提前集中在一个地方收集服务日志,你可能会遇到困难。你还可以将与特定请求相关的日志与唯一的相关 ID 关联。这意味着与请求相关的不同服务中的所有日志都可以通过此关联 ID 访问。

哪些工具比较好:

Elastic Logstash

9、监控和警报

在微服务架构中,如果你想要一个可靠的应用程序或服务,你必须监控应用程序的功能、性能、通信和任何其他方面,以实现一个负责任的应用程序。

我为什么要使用它:

你需要监控整体功能和服务健康状况,还需要监控性能瓶颈,并准备解决故障的计划。通过在关键点定义服务的早期警报来减少服务的停机时间,从而优化用户体验。当负载较重时等,可以监控服务的整体资源消耗。

哪些工具比较好:

Prometheus , Kibana,Graphana

10、分布式追踪

调试始终是开发人员最关心的问题之一,因为你都有跟踪或调试单体引用程序的经验。那是非常直接和容易,但是在微服务架构上,因为一个请求可能会通过不同的服务,这使得调试和跟踪变得困难,因为服务不在一个地方,所以分布式追踪工具将会有所帮助。

我为什么要使用它:

如果没有分布式跟踪哪些工具比较好,通过不同的服务跟踪你的请求会令人沮丧或不可能。你可以借助用于演示请求流的丰富 UI 轻松跟踪请求和事件。

哪些工具比较好:

OpenTelemetry , Jeager,Zipkin

11、数据持久化

在大多数系统中,我们需要持久化数据,将应用程序的数据写入具有不同结构的物理文件中,以便数据用于进一步的处理或报告。

我为什么要使用它:

在单体应用程序中,我们曾经有一种或两种不同的持久性类型,大多数单体应用程序使用关系数据库,如 SQL Server、Oracle、MySQL。但是在微服务架构中,我们应该遵循“DataBase Per Service”模式,这意味着保持每个微服务的持久数据对该服务是私有的,并且只能通过其 API 访问。

对于不同的用途和场景,你将拥有不同的数据库。例如,数据展示服务可能会使用像 ElasticSearch 或 MongoDB 这样的 NoSQL 数据库,因为它们使用文档基础结构,这意味着这些数据库中持久化数据的结构与关系数据库不同,更适用于具有读多写少的服务。

另一方面,在某些微服务中,你可能需要 Oracle 或 SQL SERVER 等关系数据库,或者你可能还需要一些支持图结构或键值结构的数据库。

所以,在微服务架构中,根据服务的使命,你会需要不同类型的数据库。

哪些工具比较好:

关系数据库或 RDBMS : PostgreSQL, MySQL, SQL SERVRE, Oracle

NoSQL 数据库 : MongoDB, Cassandra,Elasticsearch

11、缓存

缓存减少了微服务架构的服务到服务通信的延迟。缓存是高速数据存储层。当从缓存中请求数据时,它的速度比访问硬盘中的数据要快。

我为什么要使用它:

在微服务架构中,有许多策略可以通过这些方式实现缓存。考虑以下:

1:嵌入式缓存(分布式和非分布式)

2:客户端-服务器缓存(分布式)

3:反向代理缓存(Sidecar)

为了减少延迟,可以在不同的层中实现缓存。此外,你还可以实现分布式缓存,它可以被多个微服务访问。它们还有不同的用途,比如限流,限流的目的是通过对并发访问/请求进行限速或者一个时间窗口内的的请求进行限速来保护系统,一旦达到限制速率则可以拒绝服务。。

哪些工具比较好

Redis (Remote Dictionary Server), Apache Ignite,Hazelcast IMDG

 

12、 云供应商

云服务提供商是一个第三方公司,提供基于云的平台,基础设施,应用程序或存储服务。就像房主为电力或天然气等公用事业付费一样,公司通常只需根据业务需求为他们使用的云服务数量付费。

云提供商最重要的类别:

  • 软件即服务 (SaaS)。

  • 平台即服务 (PaaS)。

  • 基础设施即服务 (IaaS)。

我为什么要使用它

使用云计算服务的一个好处是,公司可以避免搭建和维护自己的 IT 基础设施的前期成本和复杂性,而只需在使用时为所用的东西付费。今天,公司可以租用从应用程序到存储的任何东西,而不是拥有自己的计算基础设施或数据中心。

哪些工具比较好

Amazon Web Services (AWS), Microsoft Azure, Google Cloud,Alibaba Cloud

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/516793.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【python 多线程】零基础也能轻松掌握的学习路线与参考资料

Python 多线程指的是在同一时间内,Python 程序中存在多个线程同时执行的情况。Python 中的线程是轻量级的,由操作系统进行调度和处理。多线程的学习对于想要进行 Python 并发编程的程序员来说是非常重要的。本文将提供 Python 多线程的学习路线、参考资料…

Talk预告 | 港中文博士生赖昕:SphereFormer大幅提升LiDAR点云远处识别性能

本期为TechBeat人工智能社区第496期线上Talk! 北京时间5月11日(周四)20:00,香港中文大学三年级博士生—赖昕的Talk将准时在TechBeat人工智能社区开播! 他与大家分享的主题是: “SphereFormer大幅提升LiDAR点云远处识别性能”,届时…

Talk预告 | 大连理工大学IIAU Lab在读博士生严彬:走向通用实例感知

本期为TechBeat人工智能社区第495期线上Talk! 北京时间5月10日(周三)20:00,大连理工大学IIAU Lab在读博士生—严彬的Talk将准时在TechBeat人工智能社区开播! 他与大家分享的主题是: “走向通用实例感知”,届时将介绍和探讨通用实…

Nginx从入门到精通

一、 Nginx能做什么 1.反向代理 2.负载均衡 3.HTTP服务器(包含动静分离) 4.正向代理 例如: 我当前配置的服务器 1、配置http 2、配置https 3、配置反向代理 [rootasia~]# cat /etc/nginx/nginx.conf # For more information on configur…

【Java零基础入门篇】第 ④ 期 - 继承(一)

【Java零基础入门篇】第 ④ 期 - 继承(一) 博主:命运之光专栏:Java零基础入门 学习目标 1.掌握继承性的主要作用、实现、使用限制; 2.掌握this和super的含义及其用法; 3.掌握方法覆写的操作; 4.…

windows环境安装使用nginx,redis详解

01-redis windows版下载地址: Releases microsoftarchive/redis GitHub 直接运行.msi的安装包,一直next,直到下面界面,勾选上再next 这一步选择端口,然后next(后面可以通过配置文件修改的) 选择最大缓存容…

哪种款式蓝牙耳机戴着舒服?公认佩戴舒适度高的蓝牙耳机

真无线蓝牙耳机具有使用方便、随身携带,一跃成为蓝牙耳机行业的新宠,几乎是人手必备的数码单品,耳机市场十分庞大,让消费者很难抉择到底蓝牙耳机哪个品牌最好,所以下面就介绍几款佩戴舒适度高的蓝牙耳机,分…

快递从揽收到仓库出仓之间的时间差,要如何分析

最近很多朋友跟我说最近在工作碰到这个样的问题,让他一直都很困扰着,不知道要如何解决呢,很多平台有规定,快递从揽收到仓库出仓这个时间,如果超出平台规定时内快递还没出仓库,平台算您违规,会对…

一种有效的水下无线传感器网络路由协议(Matlab代码实现)

目录 💥1 概述 📚2 运行结果 🎉3 参考文献 👨‍💻4 Matlab代码 💥1 概述 与陆地多跳传感器网络类似,水下网络的路由协议可以分为:①主动路由,②按需路由。 ①主动路…

中创 | 云服务市场竞争加剧,全国增值电信业务经营许可企业达14万家

中国互联网行业的竞争愈加激烈,都试图在市场中获取优势,寻求新的发展蓝海。其中,在数字经济中扮演重要角色的云服务产业,如今也处于一个前所未有的大变局。 但想要进入云服务产业,“证件”和“技术”一样都不能少&…

基于FPGA的VGG16卷积神经网络加速器

文章搬运自本人知乎 VGG16网络结构介绍 VGG在2014年由牛津大学Visual GeometryGroup提出,获得该年lmageNet竞赛中Localization Task(定位任务)第一名和 Classification Task (分类任务)第二名。与AlexNet相比,VGG使用了3个3x3卷积核来代替7x7卷积核&…

全景丨0基础学习VR全景制作,平台篇第22章:热点功能-导航

大家好,欢迎观看蛙色VR官方——后台使用系列课程! 功能说明 应用场景 热点,指在全景作品中添加各种类型图标的按钮,引导用户通过按钮产生更多的交互,增加用户的多元化体验。 导航热点,标注具体位置&…

远程访问ERP - 在外远程登录公司局域网金蝶云ERP管理系统

文章目录 前言1.金蝶安装简介2. 安装cpolar内网穿透3. 创建安全隧道映射4. 在外远程访问金蝶云星空管理中心5. 固定访问地址6. 配置固定公网访问地址7.创建数据中心简介8.远程访问数据中心9. 固定远程访问数据中心地址10. 配置固定公网访问地址 前言 金蝶云星空聚焦多组织&…

反病毒技术介绍与发展

1.1 计算机病毒概念 计算机病毒(Computer Virus)是指编制者在计算机程序中插入的破坏计算机功能或者破坏数据,影响计算机使用并且能够自我复制的一组计算机指令或者程序代码。这是目前对于计算机病毒最通用的定义。计算病毒、蠕虫以及木马是…

Hortic Res | 中国计量大学徐沛组开发了用于促进难转化豆类蔬菜功能基因组学研究的分子工具包

以下文章来源于园艺研究 ,作者吴昕扬 园艺研究. 《园艺研究》(Horticulture Research)是南京农业大学主办的英文学术期刊,采用开放获取形式,专注刊载和园艺作物有关,能引起广泛的国际和学科兴趣的基础和理…

2023 年第八届数维杯大学生数学建模挑战赛 B 题详细思路 节能列车运行控制优化策略

一种可能的建模方法是基于列车的动力学方程和阻力方程,将列车视为单质点,忽略车厢间的车钩力和速度差。根据给定的参数,可以建立如下的方程: $$m(p1)\frac{dv}{dt}F-f(v)-g(i)$$ $$f(v)2.08950.0098v0.006v^2$$ $$g(i)mgi$$ 其…

NAT是如何工作的?

广域网是由很多的局域网组成的,比如公司网络、家庭网络、校园网络等。我们到微观层面,看看局域网是如何工作的。IPv4 的地址不够,因此需要设计子网。当一个公司申请得到一个公网 IP 后,会在自己的公司内部设计一个局域网。这个局域…

8自由度串联四足机器人实现前进功能

1. 功能说明 本文示例将实现R253样机8自由度串联四足机器人前进的功能,该机构是由4个 2自由度串联仿生腿 组成。 2. 串联关节型机器人运动算法 8自由度串联四足机器人的前进步态是将机器人四足分成两组腿(身体一侧的前足与另一侧的后足)分别进…

集群时间同步

集群时间同步 时间同步的方式:找一个机器,作为时间服务器,所有的机器与这台集群时间进行定时的同步,比如,每隔十分钟,同步一次时间。 1.配置时间同步具体实操: 1.1)时间服务器配…

中国20强(上市)游戏公司2022年财报分析:营收结构优化,市场竞争进入白热化

易观:受全球经济增速下行的消极影响,2022年国内外游戏市场规模普遍下滑。但中国游戏公司凭借处于全球领先水平的研发、发行和运营的能力与经验,继续加大海外市场布局,推动高质量发展迈上新台阶。 风险提示:本文内容仅代…