【微服务】------微服务架构技术栈

目前微服务早已火遍大江南北,对于开发来说,我们时刻关注着技术的迭代更新,而项目采用什么技术栈选型落地是开发、产品都需要关注的事情,该篇博客主要分享一些目前普遍公司都在用的技术栈,快来分享一下你当前所在用的技术吧。

一、微服务治理中心框架

Apache Dubbo分布式RPC框架

Apache Dubbo是一款 RPC 服务开发框架,用于解决微服务架构下的服务治理与通信问题,官方提供了 Java、Golang 等多语言 SDK 实现。使用 Dubbo 开发的微服务原生具备相互之间的远程地址发现与通信能力, 利用 Dubbo 提供的丰富服务治理特性,可以实现诸如服务发现、负载均衡、流量调度等服务治理诉求。Dubbo 被设计为高度可扩展,用户可以方便的实现流量拦截、选址的各种定制逻辑。

Spring Cloud Alibaba分布式应用服务开发一站式解决方案

Spring Cloud Alibaba致力于提供微服务开发的一站式解决方案。此项目包含开发分布式应用微服务的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。 依托 Spring Cloud Alibaba,您只需要添加一些注解和少量配置,就可以将 Spring Cloud 应用接入阿里微服务解决方案,通过阿里中间件来迅速搭建分布式应用系统。 此外,阿里云同时还提供了 Spring Cloud Alibaba 企业版 微服务解决方案,包括无侵入服务治理(全链路灰度,无损上下线,离群实例摘除等),企业级 Nacos 注册配置中心和企业级云原生网关等众多产品。

Spring Cloud Alibaba与Spring Cloud的关系

在 Spring Cloud 众多的实现方案中,Spring Cloud Alibaba 凭借其支持组件最多,方案最完善,在 Spring Cloud 生态家族中扮演了重要角色。Spring Cloud Alibaba 与 Spring Cloud 生态其他方案之间对比图如下:

主要功能

Sentinel

阿里巴巴开源产品,把流量作为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。

Nacos

阿里巴巴开源产品,一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。

RocketMQ

Apache RocketMQ™ 基于 Java 的高性能、高吞吐量的分布式消息和流计算平台。

Dubbo

Apache Dubbo™ 是一款高性能 Java RPC 框架。

Seata

阿里巴巴开源产品,一个易于使用的高性能微服务分布式事务解决方案。

Alibaba Cloud OSS

阿里云对象存储服务(Object Storage Service,简称 OSS),是阿里云提供的海量、安全、低成本、高可靠的云存储服务。您可以在任何应用、任何时间、任何地点存储和访问任意类型的数据。

Alibaba Cloud SchedulerX

阿里中间件团队开发的一款分布式任务调度产品,支持周期性的任务与固定时间点触发任务。

Alibaba Cloud SMS

覆盖全球的短信服务,友好、高效、智能的互联化通讯能力,帮助企业迅速搭建客户触达通道。

Spring Cloud微服务开发和治理框架

Spring Cloud为开发者提供了工具来快速构建分布式系统中的一些常见模式(例如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式会话,集群状态)。分布式系统的协调导致了样板模式,使用 Spring Cloud 开发人员可以快速建立实现这些模式的服务和应用程序

Spring Cloud架构图

Spring Cloud Tencent一站式微服务解决方案

Spring Cloud Tencent是腾讯开源的一站式微服务解决方案。Spring Cloud Tencent 实现了 Spring Cloud 标准微服务 SPI,开发者可以基于 Spring Cloud Tencent 快速开发 Spring Cloud 微服务架构应用。Spring Cloud Tencent 的核心依托腾讯开源的一站式服务发现与治理平台  Polarismesh ,实现各种分布式微服务场景。

Spring Cloud Tencent架构图

Apache ServiceComb一站式开源微服务解决方案

Apache ServiceComb架构图

Apache ServiceComb 提供了融合开源生态的一站式微服务开源解决方案,致力于帮助企业、用户和开发者将应用轻松微服务化上云,实现对微服务应用的高效运维管理。

Apache ServiceComb项目介绍传送门

二、持续集成CI/CD

CI/CD配置中心
Jenkins、Docker Hub、Maven、Nexus、CI/CDApollo

三、微服务组件

阿里系

选项组件
服务调用方式OpenFeign
服务注册Nacos Discovery
API网关Spring Cloud Gateway
熔断限流Sentinel
配置中心Nacos Config
消息队列RocketMQ
分布式事务Seata
分布式服务追踪Spring Cloud Sleuth
监控Spring Cloud Admin
短信服务Alibaba Cloud SMS

Spring Cloud&Dubbo系

选项组件
服务调用方式feign
服务注册Eurake、Zookeeper
API网关Spring Cloud Gateway、Zuul
熔断限流Hystrix
配置中心Apollo、Spring Cloud Config
分布式服务追踪Spring Cloud Sleuth
监控Spring Cloud Admin
消息总线Spring Cloud Bus

四、容器

选项首选
容器Docker
容器编排管理kubernetes(首选推荐)、Docker Swarm、Apache Mesos

Kubernetes

Kubernetes也称为 K8s,是一个开源系统,用于自动部署、扩展和管理容器化应用程序,Kubernetes是一个可移植、可扩展的开源平台,用于管理容器化工作负载和服务,有助于声明式配置和自动化。它拥有庞大且快速发展的生态系统。Kubernetes 服务、支持和工具广泛可用。Kubernetes 结合了Google 超过 15 年大规模运行生产工作负载的经验以及来自社区的最佳创意和实践。什么是kebernetes?

Docker Swarm

Docker Swarm, Docker的原生集群系统。Docker Swarm 模式内置于 Docker 引擎中,用于本地管理称为 swarm 的Docker引擎集群。使用 Docker CLI 创建 swarm,将应用程序服务部署到 swarm,并管理 swarm 行为。这是 Docker 的第一个容器编排项目。

Kebernetes与Docker Swarm对比

Docker Swarm与K8s对比.png

五. 应用服务

选项首选备选
消息队列阿里云RabbitMQ服务
广播式消息队列阿里云Kafka服务
关系型数据库阿里云RDS MySQL服务
分布式关系型数据库服务Sharding-JDBC
非关系型数据库阿里云Mongo服务
缓存阿里云Redis服务
文件服务器阿里云OSS服务
短信阿里云短信服务
负载均衡阿里云SLBNginx
分布式定时任务框架XXL-JobElastic-Job
日志框架ELK
数据访问Mybatis Plus

六、测试

选项首选
UISeleniu(少)
单元测试JUnit(中)
接口和性能测试JMeter(多)

七、总结

该篇文章主要是介绍当前比较流行的一些微服务技术栈以及常用的应用服务,仅仅是个人的一些看法,后面还会持续更新该篇文章内容,目前你公司常用的微服务架构有哪些呢?可以在评论区留言,我是xiaoli8748👨‍🎓,我们下期见!!

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

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

相关文章

深入理解与实践:npm常用命令全面解析

引言 npm的重要性:简要介绍npm(Node Package Manager)作为Node.js生态系统的基石,其在JavaScript开发中的角色和作用。npm的功能概述:包管理和发布、依赖管理、版本控制、脚本执行等核心功能说明。 一、npm基础操作 …

Docker设置ustc的镜像源(镜像加速器:修改/etc/docker/daemon.json文件)

1、ustc简介 ustc是老牌的linux镜像服务提供者了,还在遥远的ubuntu 5.04版本的时候就在用。ustc的docker镜像加速器速度很快。ustc docker mirror的优势之一就是不需要注册,是真正的公共服务。 https://lug.ustc.edu.cn/wiki/mirrors/help/docker&#x…

ES6 => 箭头函数

目录 语法基本形式 参数 函数体 特点 箭头函数(Arrow Function)是ES6(ECMAScript 2015)中引入的一种新的函数语法,它提供了一种更简洁的方式来编写函数。箭头函数有几个显著的特点和优势,下面我们来详细…

Java每日一题(三道同一类型的题)

前言 本文一共有三道题:1.两数之和 2.三数之和 3. 四数之和 为什么把这三道题放一起呢,因为三数之和是可以根据两数之和进行推导,四数之和可以根据三数之和进行推导。 两数之和 思路分析: 我的思路: 1.排序 2.使用左右指针 3.处理细节问题 先让数组…

react17中使用setState导致了死循环

在使用setState时发生死循环的错误,可能的原因是在这三个地方使用了setState: componentDidUpdate;componentWillUpdate;render。 为什么会这样? 每次渲染页面的时候就会调用render,render里面是setState&#xff0…

生活中的数学 --- 等额本息贷款和等额本金贷款的月供应该怎么算?

等额本息贷款和等额本金贷款的月供应该怎么算? 从一个例子开始,假设我要从银行贷款36万(即,本金),银行给出的贷款年利率是12%(月利率为年利率除以12),贷款半年(6个月),按月还款,分6期还完。 问分…

电池二次利用走向可持续大循环周期的潜力和挑战(第二篇)

一、二次利用风险 电动汽车的当前电池信息,如年份、容量和制造商,通常是相互关联和不完整的。再加上电池内部的电化学变化,SLB在包括安全和环境在内的一些领域存在很大的风险,这表明短期内梯次利用仍然是一个不成熟的方案。 1.1 安…

在mysql中如何更新数据呢?

如何更新一条数据? 在 MySQL 中,更新一条数据可以使用 UPDATE 语句。以下是更新一条数据的基本语法: UPDATE table_name SET column1 value1, column2 value2,... WHERE condition;其中: table_name:要更新的表的…

Linux 系统下对于 MySQL 的初级操作

由于公司老板想把早已封存的服务器陈年老码捣鼓一下,所以找了一个外援,我则是配合提供支持。但是过程并不顺利。至少 5 年以上的间隔,导致外援查看的时候发现很多代码和配置是缺失的,目前卡在数据库部分,而我这边就帮忙…

案例:逻辑复制把checkpoint、walsender、backup全部卡死

问题现象 备份进程命令pg_start_backup()被checkpoint进程阻塞,checkpoint被逻辑复制walsender进程阻塞。业务虽然还在继续运行,但是备份、checkpoint、逻辑复制全部hang死。 pg_stat_activity 中有两个明显异常的等待事件:replication_slo…

libVLC 提取视频帧使用QGraphicsView渲染

在前面章节中,我们讲解了如何使用QWidget渲染每一帧视频数据,这种方法对 CPU 负荷较高。 libVLC 提取视频帧使用QWidget渲染-CSDN博客 后面又讲解了使用OpenGL渲染每一帧视频数据,使用 OpenGL去绘制,利用 GPU 减轻 CPU 计算负荷…

亚马逊AWS永久免费数据库

Amazon DynamoDB 是一项无服务器的 NoSQL 数据库服务,您可以通过它来开发任何规模的现代应用程序。作为无服务器数据库,您只需按使用量为其付费,DynamoDB 可以扩展到零,没有冷启动,没有版本升级,没有维护窗…

交换机与队列的介绍

1.流程 首先先介绍一个简单的一个消息推送到接收的流程,提供一个简单的图 黄色的圈圈就是我们的消息推送服务,将消息推送到 中间方框里面也就是 rabbitMq的服务器,然后经过服务器里面的交换机、队列等各种关系(后面会详细讲&…

Github 2024-04-10 开源项目日报Top10

根据Github Trendings的统计,今日(2024-04-10统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目4TypeScript项目2JavaScript项目1Shell项目1Go项目1非开发语言项目1免费API集合 创建周期:2900 天开发语言:Python协议类型:MIT L…

RabbitMQ如何保证消息的幂等性???

在RabbitMQ中,保证消费者的幂等性主要依赖于业务设计和实现,而非RabbitMQ本身提供的一种直接功能。 在基于Spring Boot整合RabbitMQ的场景下,要保证消费者的幂等性,通常需要结合业务逻辑设计以及额外的技术手段来实现。以下是一个…

Elasticsearch 悬挂索引分析和自己的一点见解

在 Elasticsearch 的实战中,悬挂索引是一个既常见又容易引起困扰的概念。 今天,我将分享一次处理集群状态为RED,原因为DANGLING_INDEX_IMPORTED 的实战经验,深入探讨悬挂索引的定义、产生原因、管理方法,以及如何有效…

网关之王:Gateway基本配置技术分享

一、网关的基本概念和功能,以及其在网络中的作用。 网关是指一个网络中从一个协议簇(如TCP/IP)的网络末端,连接到另一个协议簇(如IPX/SPX)的网络的节点。它是网络通信的必要组件,主要用于将同一…

[Linux - C语言] 自主Shell

[Linux - C语言] 自主Shell [Linux - C语言] 自主Shell逻辑策划 main()打印命令行 void MakeCommandLineAndPrint()用户名 USER主机名 HOSTNAME当前目录 PWDSkipPath 切割目录打印命令行 获取用户字符串 int GetUserCommand()检查重定向 void CheckRedir()切割字符 void SplitC…

Rust - 数据类型

Rust 是静态编译语言,在编译时必须知道所有变量的类型。 基于使用的值,编译器通常能推断出它的具体类型,但如果可能的类型比较多,例如把String转换为整数的parse方法,就必须添加类型的标注,否则编译会报错…

JVM字节码与类的加载——类的加载过程详解

文章目录 1、概述2、加载(Loading)阶段2.1、加载完成的操作2.2、二进制流的获取方式2.3、类模型与Class实例的位置2.4、数组类的加载 3、链接(Linking)阶段3.1、链接阶段之验证(Verification)3.1.1、格式检查3.1.2、字节码的语义检查3.1.3、字节码验证3.1.4、符号引用验证 3.2、…