(一)认识微服务

1. 什么是微服务

微服务是分布式架构的一种。

1.1 微服务技术 != Spring Cloud

分布式架构就是要把服务进行拆分,拆分的过程会产生一系列问题需要解决,而Spirng Cloud 只是解决了服务拆分的过程中的服务治理问题,所以一个完整的微服务包含的不只是Spring Cloud。

1.2 微服务技术栈的具体内容

  1. 传统的单体架构中所有的服务都耦合在一起,随着业务的发展,后续的升级维护会变得越来越困难,所以一些大型项目都要进行拆分。
  2. 微服务会根据业务功能模块把一个单体的项目拆分成许多个独立的项目,每个项目完成一部分业务功能,后续进行独立和部署,这样的一个项目称为一个服务。通常每个项目会包含成百上千的服务,形成一个服务集群。
  3. 一个业务往往需要多个服务之间相互调用来共同完成。当业务越来越多越复杂时,这些服务之间的调用关系也越来越复杂。
  4. 为了解决复杂的调用关系,微服务中引入了注册中心这个组件。注册中心可以记录微服务中每一个服务的IP、端口以及功能等其他信息。此时,当一个服务需要调用另一个服务时,它不需要记录对方的IP,直接去注册中心就行了,从注册中心拉取对方的服务信息。
  5. 为了解决种多服务的配置文件的管理问题,微服务中引入了配置中心这个组件。配置中心可以统一的管理整个服务集群里所有的服务的配置,如果有配置信息需要变更,只需要找配置中心就行了,配置中心会通知相关的服务实现配置的热更新。
  6. 为了解决用户对服务的访问问题,微服务引入了服务网关这个组件。服务网关一方面对用户身份做校验另一方面可以把用户的请求路由到具体的服务,并且在路由的过程中还可以做负载均衡。服务接收到用户请求之后访问数据库集群,完成相关服务。
  7. 为了解决高并发访问对数据库集群带来的压力,微服务中引入了分布式缓存。缓存就是把数据库中的数据放到内存当中,内存的查询效率比内存效率更高。用户请求先到分布式缓存中,如果未命中再到数据库中查询。
  8. 简单查询可以走缓存,为了解决海量数据的复杂搜索、统计和分析问题,微服务中引入了分布式搜索功能。从此数据库主要负责数据的写操作,还有一些事务类型的,对数据安全要求较高的数据存储。
  9. 微服务中各个服务相互调用的过程中整个业务的调用链路会很长,业务的执行时长是每个服务执行时长之和,性能会有所下降。为了解决这个问题,微服务中引入了实现异步通信的消息队列组件,请求来了先调用服务A,服务A不在直接去调用并等待服务B,而是通知服务B去执行,然后服务A就执行结束了,这样整个调用链路就变短了,响应时间也变短了,服务集群的业务吞吐能力也变强了。异步通信可以大大提高服务的并发。
  10. 众多的服务使得异常的排查变得十分困难,为了解决这个问题,微服务引入了分布式日志服务组件和系统监控链路追踪这两个组件,分布式服务日志可以统计整个服务集群中的运行日志,进行统一存储、统计和分析,便于后期异常的定位和排查。系统监控链路追踪可以实时监控整个服务集群中每个服务节点的运行状态、CPU的负载、内存的占用等信息,一旦出现问题可以直接定位到具体的某一个方法、栈信息等。
  11. 为了解决众多服务的部署问题,引入了持续集成的概念:利用JenKins这样的工具进行自动化部署,JenKins可以对这些微服务进行自动化编译,然后基于Docker进行打包形成镜像,再基于Kubernetes或Rancher实现自动化部署

2. 微服务技术栈的大致分类

2.1 微服务治理

主要是Spring Cloud所包含的内容:

  1. 注册发现
  2. 远程调用
  3. 负载均衡
  4. 配置管理
  5. 网关路由
  6. 系统包含
  7. 流量控制
  8. 服务授权
  9. 熔断降级
  10. 分布式事务
  11. TCC模型
  12. AT模型
  13. Seate

2.2 缓存技术

  1. SpirngDataRedis
  2. 缓存穿透、雪崩
  3. Redis主从复制
  4. OpenResty
  5. 缓存数据同步
  6. Nginx本地缓存
  7. Redis持久化
  8. 多级缓存分层
  9. Redis分片集群
  10. Lua脚本
  11. Redis数据结构

2.3 异步通信技术

  1. MQ消息模型
  2. SpringAMQP
  3. 消息堆积
  4. 消息可靠性
  5. 仲裁队列
  6. 延迟队列
  7. 镜像集群
  8. 数据持久化

2.4 分布式搜索技术

  1. DSL语句
  2. RestAPI
  3. ES集群
  4. 集群脑裂
  5. 竞价排名
  6. 聚合统计
  7. 自动补全
  8. 地理坐标
  9. 拼音分词

2.5 DevOps(持续继承)

  1. Dockerfile
  2. DokcerCompose
  3. GrayLog
  4. Jenkins
  5. SkyWalking
  6. Docker使用
  7. Kubernetes

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

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

相关文章

GRE和MGRE综合实验

实验拓扑图 实验思路 根据图中所属网段,配置ip地址和网关R1,R2,R3,R4配置缺省路由,可以是公网互通使用ppp验证,R1与R5为PAP验证,R5:aaa地址池,创建用户名以及密码,同时进行pap服务认证,同时在…

playwright 对象是 Playwright 框架中的核心对象

Playwright对象是Playwright框架中的一个重要对象,它充当了管理和控制浏览器实例的中介,并提供了访问不同浏览器引擎功能的接口。Playwright库为Web浏览器自动化提供了一组强大的API,可以轻松地操作和控制Chromium、Firefox和WebKit浏览器。p…

(root用户与非root用户)linux下安装最新版tmux

下载依赖包 tmux需要两个依赖包,libevent和ncurses,在tmux的github wiki官网可以找到对应的源码下载地址: libeventncursestmux 下载三个包的tar.gz文件 root用户与非root用户 下列安装指令中,如果是root用户想安装到系统级目录下&#x…

使用nvm管理nodejs版本

文章目录 1、下载NVM2、选择NVM安装3 、查询版本号&常用命令4、nvm命令安装指定版本node4.1 安装指定node4.2 查看是否安装成功4.3 切换node版本到你想要的版本4.4 再次查看nvm版本列表4.5 nvm其他常用命令 这个是每个全能前端经常会用到的,之前用过现在重装了&…

如何Hook [NSString stringWithFormat] 代码hook stringWithFormat中替换NSString字符串

怎么hook stringWithFormat方法 id stringWithFormat(id self, SEL op,id obj1, ...); id stringWithFormat(id self, SEL op,id obj1, ...){va_list args;va_start(args, obj1);//等价实现方法NSString *result [[NSMutableString alloc] initWithFormat:obj1 arguments:arg…

BitVM2:比特币上的无需许可验证

1. 引言 前序博客有: 基于BitVM的乐观 BTC bridgeBitVM:Bitcoin的链下合约Bitcoin Bridge:治愈还是诅咒? 最初的 BitVM 设计仅限于两方设置。BitVM2结合了并行和冗余实例,以引入基于 1-of-n 诚实假设的多方配置。这…

Android 自定义EditText

文章目录 Android 自定义EditText概述源码可清空内容的EditText可显示密码的EditText 使用源码下载 Android 自定义EditText 概述 定义一款可清空内容的 ClearEditText 和可显示密码的 PasswordEditText,支持修改提示图标和大小、背景图片等。 源码 基类&#xf…

WebViz可视化

WebViz可视化 Webviz是一个基于Web的可视化工具,意味着您可以通过浏览器/APP访问它,而不需要安装额外的软件。这对于远程访问和团队协作非常方便。 Foxglove是一个开源的工具包,包括线上和线下版。旨在简化机器人系统的开发和调试。它提供了…

Gitea 的详细介绍

什么是 Gitea? Gitea 是一个开源、轻量级的自托管 Git 服务,它允许用户搭建类似于 GitHub 或 GitLab 的代码托管平台。由于采用 Go 语言开发,Gitea 具有高效的性能和跨平台特性,适合个人开发者或小团队使用。 Gitea 的特点 轻量…

蓝桥杯第十三届电子类单片机组程序设计

目录 前言 单片机资源数据包_2023 一、第十三届比赛省赛 1.比赛题目 2.赛题解读 二、部分功能实现 1.继电器的开启与关闭 2.长按切换显示状态功能的实现 3.对于温度传感器小数部分的处理 4.其他处理 1)关于数码管显示小数的处理 2)关于5s后继…

SpringBoot + LiteFlow(二):LiteFlow特性和环境支持

项目特性 组件定义统一: 所有的逻辑都是组件,为所有的逻辑提供统一化的组件实现方式,小身材,大能量。规则轻量: 基于规则文件来编排流程,学习规则入门只需要5分钟,一看即懂。规则多样化: 规则支持xml、json、yml三种规则文件写法方式,喜欢哪种用哪个。任意编排: 再复…

简易TCP服务器通信、IO多路复用(select、poll、epoll)以及reactor模式。

网络编程学习 简单TCP服务器通信三次握手和四次挥手状态转换总结client和server通信写法server端client端 怎么应对多用户连接?缺点 IO多路复用select优缺点 pollpoll写法和改进点 epoll(使用最多,重中之重)epoll写法和改进点LT模…

结构体类型,结构体变量的创建和初始化 以及结构中存在的内存对齐

一般结构体类型的声明 struct 结构体类型名 { member-list; //成员表列 }variable-list; //变量表列 例如描述⼀个学⽣: struct Stu { char name[20]; //名字 int age; //年龄 char sex[5]; //性别 }; //结构体变量的初始化 int main() { S…

牛客NC30 缺失的第一个正整数【simple map Java,Go,PHP】

题目 题目链接: https://www.nowcoder.com/practice/50ec6a5b0e4e45348544348278cdcee5 核心 Map参考答案Java import java.util.*;public class Solution {/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可…

Modelsim手动仿真实例

目录 1. 软件链接 2. 为什么要使用Modelsim 3. Modelsim仿真工程由几部分组成? 4. 上手实例 4.1. 新建文件夹 4.2. 指定目录 4.3. 新建工程 4.4. 新建设计文件(Design Files) 4.5. 新建测试平台文件(Testbench Files&…

企业数据被新型.rmallox勒索病毒加密,应该如何还原?

.rmallox勒索病毒为什么难以解密? .rmallox勒索病毒难以解密的主要原因在于其采用了高强度的加密算法,并且这些算法被有效地实施在了病毒程序中。具体来说,.rmallox勒索病毒使用了RSA和AES这两种非常成熟的加密算法。RSA是一种非对称加密算法…

08、Lua 函数

Lua 函数 Lua 函数Lua函数主要有两种用途函数定义解析:optional_function_scopefunction_nameargument1, argument2, argument3..., argumentnfunction_bodyresult_params_comma_separated 范例 : 定义一个函数 max()Lua 中函数可以作为参数传递给函数多返回值Lua函…

Laravel 数据库:判断数据表是否存在

检测某个表是否存在: if (Schema::hasTable(table_name)) { // } 在某个表不存在的情况下再执行创建操作: if ( ! Schema::hasTable(table_name)) { // 创建数据库表的代码 } 如果你想安全的 drop 掉一个数据表,使用以下&#xf…

蓝桥杯刷题记录之蓝桥王国

只是记录 这题用迪杰斯特拉来就行&#xff0c;我写的是堆优化版本 import java.util.*;public class Main{static Scanner s new Scanner(System.in);static int n,m,startPoint1;static List<Edge>[] table;//邻接表,因为是稀疏图static long[] dist;static boolean[] …

Day25 代码随想录(1刷) 回溯

39. 组合总和 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target &#xff0c;找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 &#xff0c;并以列表形式返回。你可以按 任意顺序 返回这些组合。 candidates 中的 同一个 数字可以 无限制重复…