微服务框架的介绍

article/2025/8/27 10:13:24

一、什么是微服务

微服务并没有一个官方的定义,可以理解为一种架构风格,将一个大型复杂软件应用由一个或多个微服务组成。系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。每个微服务仅关注于完成一件任务并很好地完成该任务。在所有情况下,每个任务代表着一个小的业务能力。
以往的应用程序开发中,应用程序都是单体型,在开发和部署上比较方便,但是随着业务的不断增加,开发迭代和性能瓶颈等问题都会增加开发难度。微服务正是为解决这一设计问题而应运而生,微服务在将复杂系统切分为数十乃至上百个小服务的同时,这些小服务带来了语言和框架选择上的灵活性,缩短应用开发上线时间,可根据不同的工作负载和资源要求对服务进行独立缩扩容等优势。

二、微服务框架的技术点

微服务被拆分为多个微服务进程后,进程内的方法调用变成了进程间的远程调用,这种变化会带来分布式系统的一系列问题,比如:

  • 服务的注册与发现
  • 身份验证与授权
  • 服务的伸缩控制
  • 反向代理与负载均衡
  • 路由控制
  • 流量切换
  • 日志管理
  • 性能度量、监控与调优
  • 分布式跟踪
  • 过载保护
  • 服务降级
  • 服务部署与版本升级策略支持
  • 错误处理

从上述微服务存在的技术点可以得到微服务基础架构的如下关键点:
在这里插入图片描述

三、微服务技术框架的介绍

微服务框架可以分为侵入式和非侵入式两种,什么是侵入式和非侵入式呢?可以以微服务框架Spring Cloud来进行说明,在微服务框架中使用Eruka Server作为服务注册中心,在微服务单元上配置使用Eureka Client向注册中心进行注册,这样就会带来一个问题,在旧代码或者非JAVA代码(比如Python)中使用Spring Cloud微服务框架,这样就需要对旧代码及非JAVA代码进行微服务化的改造。Spring Cloud是侵入式的微服务框架,侵入式微服务架构还存在Dubbo框架。
什么是非侵入式的微服务框架呢,还是以微服务框架中微服务的注册来进行说明,比如将服务注册和服务调用从现有服务中抽离出来,形成一个服务代理。该服务代理也叫做Sidecar,负责找到目的服务并负责通讯的可靠性和安全等问题。当服务大量部署时,随着服务部署的Sidecar代理之间的链接形成了一个如下图所示的网格,该网格成为微服务的通讯基础设施层,承载微服务之间的所有流量,被称为Service Mesh(服务网格)。非侵入式的微服务框架的比较有代表性的方案有Istio和Conduit。
在这里插入图片描述
下面对这几种方案进行一个简单初步的介绍。
Spring Cloud
Spring Cloud作为一个微服务的开发框架,包括了很多的组件,其中包括Spring Cloud Netflix(Eureka、Hystrix、Zuul、Archaius)、Spring Cloud Config、Spring Cloud Bus、Spring Cloud Cluster、Spring Cloud Consul、Spring Cloud Security、Spring Cloud Sleuth、Spring Cloud Data Flow、Spring Cloud Stream、Spring Cloud Task、Spring Cloud Zookeeper、Spring Cloud Connectors、Spring Cloud Starters、Spring Cloud CLI等。
另外Spring Boot为Spring Cloud提供一个简化基于Spring的开发环境,可以适应Spring Boot快速开发单个微服务。
Dubbo
Dubbo是一个阿里巴巴开源出来的一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。其核心部分包含:

  • 远程通讯:提供对多种基于长连接的NIO框架抽象封装,包括多种线程模型,序列化,以及“请求-响应”模式的信息交换方式。
  • 集群容错:提供基于接口方法的透明远程过程调用,包括多协议支持,以及软负载均衡,失败容错,地址路由,动态配置等集群支持。
  • 自动发现:基于注册中心目录服务,使服务消费方能动态的查找服务提供方,使地址透明,使服务提供方可以平滑增加或减少机器。

Spring Cloud VS Dubbo
一个关于Spring Cloud和Dubbo很有意思的比喻,使用Dubbo构建的微服务架构就像组装电脑,各个环节的可选自由度很高,但是最终结果很有可能因为一条内存质量不行就点不亮了,但是如果是一个高手,这一切都不存在问题。Spring Cloud就像品牌机,在Spring Source的整合下,做了大量兼容性的测试,保证了机器拥有更高的稳定性,但是如果要在使用非原装组件外配件时,需要对配件足够的了解。
Istio
Istio是一个用来连接、管理和保护微服务的开放平台。Istio提供一种简单的方式来建立已部署服务网络,具备负载均衡、服务间认证、监控等功能,而不需要改动任何服务代码。想要为服务增加Istio的支持,只需要在环境中部署一个特殊的边车(sidecar),使用Istio控制面板功能配置和管理代理,拦截微服务之间的所有网络通信。
Istio目前仅支持在Kubernetes上的服务部署,但未来版本中将支持其他环境。
Conduit
Conduit是为Kubernetes设计的一个超轻型服务网格服务,它可透明地管理在Kubernetes上运行的服务的运行时通信,使得它们更安全可靠。Conduit提供了可见性、可靠性和安全性的功能,而无需更改代码。
Conduit service mesh也是由数据面板和控制面板组成。数据面板承载应用实际的网络流量。控制面板驱动数据面板,并对外提供北向接口。

参考博客

1.Java 微服务框架选型(Dubbo 和 Spring Cloud?)
2.谈谈微服务架构中的基础设施:Service Mesh与Istio
3.使用Istio治理微服务入门
4.微服务架构技术栈选型手册
5.以服务网格(Service Mesh)方式整合现有服务到微服务(基于SpringCloud)架构中
6.微服务并非Spring Cloud独角戏,Service Mesh未来大有可为
7.微服务等于Spring Cloud?一文告诉你微服务到底是什么。


http://chatgpt.dhexx.cn/article/8w3lOTOy.shtml

相关文章

第六篇:微服务框架(SpringBoot、SpringCloud)

目录 一. 微服务框架 1. 微服务架构概念 2. 微服务的利与弊(为什么要用微服务) 二. SpringBoot 1. SpringBoot是什么? 2. SpringBoot核心注解是什么? 3. 什么是SpringBoot的自动配置?原理是什么? 4…

DLL文件的创建和调用

文章目录 前言一、DLL的优势二、使用步骤1.创建DLL文件2.调用DLL文件 总结 前言 动态数据库 (DLL) 是作为共享函数库的可执行文件。动态数据库提供了一种方法,使进程可以调用不属于其可执行代码的函数。本文将对DLL的创建和调用步骤进行保姆级讲解。 一、DLL的优势…

C# 调用 dll 文件

一、先使用C来创建一个 .dll 文件 1、创建新项目:CreateDll01 2、选择 “动态链接库(.dll)” 文件 3、在 CreateDll01.cpp 源文件中添加如下代码 // CreateDll01.cpp : 定义 DLL 应用程序的导出函数。 //#include "stdafx.h"extern "C" __decl…

dll是什么呢?dll丢失如何解决?

DLL的概念 DLL(Dynamic Link Library)文件为动态链接库文件,又称“应用程序拓展”,是软件文件类型。在Windows中,许多应用程序并不是一个完整的可执行文件,它们被分割成一些相对独立的动态链接库,即DLL文件&#xff0…

C++ 制作动态链接库.dll及.dll使用

声明:IDE是Visual studio -version 2022 其制作的动态链接库dll里面实现简单的加减法,提供给其他项目调用。 一、动态链接库(DLL)创建 1、创建DLL工程 流程:文件 -> 新建 -> 项目 -> 动态链接库&#xf…

.dll、.lib、.dll.a 的区别

我们已 ffmpeg 的动态链接库为例,描述一下这三个文件的作用: 目录整体结构: 分析 bin 目录: ffmpeg、ffplay、ffprobe 之所以这么小,是因为他们运行的时候会调用 .dll 文件当中的代码。dll:真正存放函数…

Java调用dll文件

目录 1 C创建dll 1.1 项目与工具 1.2 步骤与代码 2 Java使用JNA调用dll 2.1 项目与工具 2.2 步骤与代码 3 实际效果 4 参考链接 1 C创建dll 1.1 项目与工具 Visual Studio 2019 1.2 步骤与代码 ①使用VS创建动态链接库(DLL)项目 ②设置项目名与…

什么是dll文件

动态链接库(Dynamic Link Library 或者 Dynamic-link Library,缩写为 DLL),是微软公司在微软Windows操作系统中,实现共享函数库概念的一种方式。这些库函数的扩展名是 ”.dll"、".ocx"(包含…

什么是dll

DLL的概念 DLL(Dynamic Link Library)文件为动态链接库文件,又称“应用程序拓展”,是软件文件类型。在Windows中,许多应用程序并不是一个完整的可执行文件,它们被分割成一些相对独立的动态链接库,即DLL文件&#xff0c…

XWiKi 部分汉化

一、进入XWiki首页,用管理员进行登陆 账号:superadmin 密码:system 登陆后点击右上角,如下图所示 二、点开管理页面 如下图所示: 三、搜索localization 四、按照图中进行修改 然后部分汉化就完成了 当然,如…

XWiKi 汉化

进入XWiKi主页,然后点击菜单栏,进入管理,汉化前图片显示: 汉化后图片显示 一、进入安装目录/xwiki/WEB-INF/lib/下找到xwiki-platform-legacy-oldcore-10.7.jar 二、用zip解压软件进入xwiki-platform-legacy-oldcore-10.7.jar不要…

xwiki开发指南1-使用XWiki创建FAQ应用

本文是按照XWiki官网开发指南-FAQ应用创建,自己翻译总结的版本。 此篇含有大量图片,关于XWiki的开发,将在下一篇讲解。 关于XWiki的部署也会单独写一篇基于docker的部署文。 使用XWiki创建FAQ应用 1.首先下载并部署XWiki(之后会…

【Wiki】XWiki安装教程_War包版本

目录 0、XWiki说明1、war包安装说明1.1、环境说明1.2、如果懒得下载可以使用这边准备好的物料包汇总 2、war包安装2.1、Tomcat安装2.2、java安装(需要root权限)2.3 、使用 source /etc/profile 刷新linux配置2.4、数据库安装2.5、解压war包与xip2.6、修改配置文件2.6.1、修改WE…

xwiki搭建

一、Xwiki简介 XWiki是一个由Java编写的基于LGPL协议发布的开源wiki和应用平台。XWiki是一款基于java所编写的wiki,它可以运行在如Tomcat,Jetty,JBoss,WebLogic,WebSphere等Servlet容器上并利用关系型数据库(HS…

XWiki在Windows上部署

简单介绍 XWiki是一款Java开发的开源文档管理系统,它简单易用,拥有强大的权限管理功能。 部署条件 JDK11(需要注意:14版本之后需要JDK11以上)、Tomcat9,XWiki 部署过程 JDK和Tomcat的部署我就贴个参考链…

开源框架XWIKI搭建介绍

原文地址:http://john88wang.blog.51cto.com/2165294/1605787 一 应用背景描述 在平时的运维工作中,把常规工作进行文档整理非常重要,无论是平时工作处理或是工作交接,实时的维护文档资料可以提高工作效率。如果采用传统的TXT文档…

xwiki安装使用以及问题解决

环境要求: jdk1.8 安装步骤: xwiki的war包下载地址:https://www.xwiki.org/xwiki/bin/view/Download/DownloadVersion/?projectVersion10.11.2 第一步:在tomcat的webapps文件下创建xwiki文件夹,将war包上传至xwik…

CentOS 7安装XWiki

目录 前言 安装步骤 安装JDK 11 安装Tomcat 9 安装xwiki 13.10.10 安装Postgres 13 设置xwiki数据路径 参考 前言 本文介绍如何在CentOS 7安装xwiki。JDK 11 Tomcat 9 xwiki 13 Postgres 13。CentOS用vagrant虚拟化的。本文代码已开源 安装步骤 安装xwiki有四个主…

XWiki开发指南3-自定义扩展jar包

简介 本文将介绍如何编写一个提供给后台接口并使用脚本在前端页面调用。 使用maven下载XWiki提供的模板项目 保证你的maven已经安装,然后执行命令 mvn archetype:generate \-DarchetypeArtifactIdxwiki-commons-component-archetype \-DarchetypeGroupIdorg.xwi…

xwiki部署_开源Wiki应用平台---XWiki的部署

部署所需要做的工作: 1.安装好MySQL(这里使用的是MySQL5.6.23),修改MySQL的my.ini配置文件(我的是手动安装版,所以在MySQL的安装目录 下),在[mysqld]下添加以下配置: max_allowed_packet32M 这里是为了增大mysql serve…