springcloud 从头开始构建分布式微服务脚手架

news2024/12/23 18:32:35

必备服务(Windows开发本机环境)

Java maven 

mysql:自启动服务,后台运行 127.0.0.1:3306 MySQL57 root/root

Redis:手动运行,前台运行 127.0.0.1:6379 执行命令redis-server.exe redis.windows.conf

nacos:手动运行,前台运行 访问地址http://localhost:8848/nacos/index.html#/login nacos/nacos 执行start文件

使用spring cloud 构架脚手架需注意,部分组件停止更新,有了新的替代产品

第一步 构建注册中心

CAP理论

    著名的CAP理论指出,一个分布式系统不可能同时满足C(一致性)、A(可用性)和P(分区容错性)。由于分区容错性在是分布式系统中必须要保证的,因此我们只能在A和C之间进行权衡。

CAP代表含义:

一致性(Consistency) (所有节点在同一时间具有相同的数据)

可用性(Availability) (保证每个请求不管成功或者失败都有响应)

分隔容忍(Partition tolerance) (系统中任意信息的丢失或失败不会影响系统的继续运作)

各主流注册中心产品对比

    最常见的注册中心有Zookeeper、Eureka、Nacos。Zookeeper保证的是CP, 而Eureka则是AP。Nacos同时支持AP和CP模式,他根据服务注册选择临时和永久来决定走AP模式还是CP模式。

由于Eureka已经停止更新,选择Nacos。nacos还具有配置中心的功能。

第二步 构建路由网关

需要说明的是:spring cloud已经不再集成zuul,并且zuul是第三方包,从性能上来讲不如spring自己开发的gateway。

Nginx网关:适合门户网关,是作为整个全局的网关,是对外的,处于最外层,用不同的语言编写的,不易于扩展。

Gateway网关:业务网关,主要用来对应不同的客户端提供服务,用于聚合业务。各个微服务独立部署,职责单一,对外提供服务的时候需要有一个东西把业务聚合起来。还可以实现熔断、重试等功能,这是Nginx不具备的。

所以最终部署到服务器上时,使用Nginx做转发,提供静态页面访问,gateway提供业务请求,所有请求地址均指向gateway服务

gateway特性

  • 基于Spring Framework 5、Project Reactor和Spring Boot 2.0构建;

  • 能够在任意请求属性上匹配路由;

  • predicates(谓词) 和 filters(过滤器)是特定于路由的;

  • 集成了Hystrix断路器;

  • 集成了Spring Cloud DiscoveryClient;

  • 易于编写谓词和过滤器;

  • 请求速率限制;

  • 路径重写。

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

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

相关文章

Weblogic漏洞 - 通杀方式

文章目录简介恶意文件把恶意文件部署到攻击机,并开启http服务写入文件写入反弹shell命令执行反弹shell命令拿到目标机器权限[linux] WebLogic Server 版本: 12.2.1.3简介 最早在 CVE-2019-2725 被提出,对于所有Weblogic版本均有效。 构造一个XML文件&…

CALC-python和shell对字符的解析差异

好久没看题了,记录一道感觉还挺有意思的题目 一进去题目界面非常简洁,一个计算器 这个简洁的界面,好像似曾相识,总感觉好像以前做题时遇到的ssti题目的界面,果断来一波ssti emem有WAF,尝试下绕过&#xff…

C++ 实现守护进程

文章目录1.守护进程概念1.什么是守护进程2.守护进程的特点3.如何查看linux系统中已存在的守护进程2.守护进程编写的步骤3.示例1.守护进程概念 1.什么是守护进程 Linux Deamon守护进程是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或者等待处理某些事…

系统小工具API接口,免费好用

1、前言 系统小工具接口,可生成长短不重复id,可获取服务器标准时间。 查看接口完整信息:https://www.idmayi.com/doc/detail?id23 2、接口明细 注意:app_id和app_secret是临时秘钥,如果真正使用,需要去 ht…

ArrayList源码解析

ArrayList源码解析 简介 ArrayList 是一种以数组实现的 List,与数组相比,它具有动态扩展的能力,因此也可称之为动态数组。 ArrayList 线程不安全,除该类未实现同步外,其余跟 Vector 大致相同。 Java 泛型只是编译器…

赛先生的新旅行:昇腾AI带来的科学智能变革

《三体》动画即将开播,又一次引发了全球科幻迷的无限热情。提到《三体》,大家有很多深刻记忆。其中之一是三体人在入侵地球之前,首先是派智子锁死地球的基础科学进步,从而限制人类的整体发展。很多人会担心,物理、化学…

LeetCode题解12 (146,97) LRU缓存<HashMap + 双向链表>,二叉树的中序遍历

文章目录LRU缓存(146)完整代码解答:二叉树的中序遍历(94)完整代码解答:LRU缓存(146) 从题上看存在Key和Value因此我们采用HashMap来进行存储,这里我们采用HashMap双向链表来实现,我们需要实现里面的get,put方法。 我们需要先创建1个链表节点 //先定义一个节点类 class ListNode…

一个合格的程序员也是一名合格的侦探---Debug篇

调试 文章目录调试1.什么是bug?1.1bug概念1.2bug的起源2.什么是调试,调试的重要性2.1调式的概念2.2 调试的基本步骤2.3Debug版本和Release版本2.3.1Debug版本2.3.2Release版本2.3.3区别2.3.4同一代码在Debug和Release下的差别3.Windows下visual stdio的调…

ioDraw - 免费的在线图表制作工具

介绍: ioDraw是一款数据可视化图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表,支持折线图、柱状图、饼图、散点图等 地址:https://www.iodraw.com/chart 特点: 图表…

springboot实现License证书的授权和许可到期验证

前言 在客户服务器部署软件项目后,为了项目版权管控或者对项目进行授权收费处理的,就需要实现项目的授权和许可验证。 在这里讲解的是使用 license证书 的形式实现授权和许可验证(已通过测试)。 主要是通过 IP地址、MAC地址、CP…

PyTorch - 线性回归

文章目录普通实现准备数据反向传播构建模型 实现实例化模型、损失函数、优化器训练数据评估模型普通实现 准备数据 import torch import matplotlib.pyplot as plt # 1、准备数据 # y 2 * x 0.8 x torch.rand([500, 1]) y_true 2 * x 0.8 # 2、通过模型计算 y_predict …

MyBatis面试题(2022最新版)

整理好的MyBatis面试题库,史上最全的MyBatis面试题,MyBatis面试宝典,特此分享给大家 MyBatis简介 MyBatis是什么? MyBatis 是一款优秀的持久层框架,一个半 ORM(对象关系映射)框架,它…

Kotlin 开发Android app(二十一):协程launch

什么是协程,这可是这几年才有的概念,我们也不用管它是什么概念,先看看他能做什么。 创建协程 添加依赖: implementation org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.9implementation org.jetbrains.kotlinx:kotlinx-cor…

DCDC电感下方铜箔如何处理

挖:电感在工作时,其持续变化的电流产生的电磁波会或多或少的泄露出来,电感下方的铜箔受电磁波影响,就会有涡流出现,这个涡流,①可能对线路板上的信号线有干扰,②铜箔内的涡流会产生热量&#xf…

申请阿里云域名SSL证书步骤

1.【点击登录】 阿里云 2.选择 DV单域名证书 3.确定购买,支付。 4.完成后,跳转回控制台。 5.点击 证书申请。 6.填写域名、申请人姓名、手机号、邮箱、所在地 7、选择域名验证方式,官方提供了三种验证方式,根据自身情况选择其中…

【Linux】Linux的常见指令详解(下)

目录 前言 head/tail 命令行管道 date sort cal 搜索指令 find which whereis alias grep zip tar file bc history 热键 前言 之前讲了Linux的常见指令详解(上),这次终于把下也补齐了。如果对你有帮助还麻烦给博主一个…

Netty_05_六种序列化方式(JavaIO序列化 XML序列化 Hessian序列化 JSON序列化 Protobuf序列化 AVRO序列化)(实践类)

文章目录一、普通的序列化方式(bean对象有直接的java类)1.1 普通的java io byteArray输入输出流的序列化方式1.2 xml序列化方式(xml用来做配置文件,这样序列化出来长度很大)1.3 Hessian序列化方式(这个Dubbo中使用的序列化方式&am…

flask前后端项目--实例-前端部分:-3-vue基本配置

一、基本配置以及验证 1.基础环境:nodejs的安装配置以及注意事项 https://blog.csdn.net/wtt234/article/details/128131999 2.vue使用vite创建文件包的过程 创建项目 npm init vitelatest 根据提示一步步选择: 选择vue 进入项目目录,安装…

【计算机网络】网络层:IPV6

IPV4耗尽,使用具有更多地址空间的IPV6 IPV6特点: (1)IPV6地址128位,更大地址空间,可以划分位更多的层次 (2)IPV6定义许多拓展首部,可提供更多功能,但IPV6首部长度固定,选项放在有效载荷中 (…

打败阿根廷的究竟是谁

2022年卡塔尔世界杯正在如火如茶的进行着。在今年的世界杯中,有两个令人意外的点,一个是日本队击败的德国队,另外一点是沙特队战胜了实力强盛的阿根廷队。 有人说打败阿根廷队的不是沙特队,而是科技------"半自动越位"技…