SpringCloud(一)——微服务基础及简单微服务项目搭建

2023-11-10

单体应用开发

传统的web应用开发是将所有的功能模块都打包到一个包中一起部署运行,单体应用集成简洁部署简单,但是随着项目复杂的的增加,单体应用会变得越来越大越来越臃肿,每次进行小功能的更新都需要更新整个包重新部署。

什么是微服务?

微服务没有一个标准的定义,它是一种架构思想,核心思想是将一个单体应用切分成多个粒度更小的服务,每个服务单独部署,都运行在自己的进程中,服务之间可以互相调用(dubbo使用RPC调用,SpringCloud使用基于http api)。

微服务是一套更为复杂的架构模式,常用的微服务组件有:

  • 服务注册与发行:服务之间进行调用时首先需要知道目标服务在哪。服务提供方会将自己的地址注册到注册中心到,而服务调用方则从服务中心获取这部分信息,从而知道服务的位置,进行交互。每个服务可以是服务提供方也可以是调用方。常用的注册中心有:eureka、consul、zookeeper
  • 负载均衡:服务提供方一般会有多个应用实例(一个服务部署多个实例,提供相同的服务,缓解单个实例的负载压力),负载均衡就是在选择服务提供方的时候,选择一个合适的实例,避免单个实例负载过高。
  • 服务网关:服务网关是服务调用的唯一入口,可以再这个组件中实现用户鉴权动态路由负载限流等功能。
  • 配置中心:将本地化的配置信息注册到配置中心,consul支持在线动态配置
  • 集成框架:集成框架以配置的形式将所有微服务组件集成到统一的界面框架下,使得用户能够更方便使用。

微服务是一把双刃剑,能解决很多单体应用的问题,同时也带来了很多的挑战:

优点:

  • 解决单体应用扩大之后出现的问题:持续开发性查、项目臃肿
  • 提高开发效率,多个服务可并行开发
  • 系统易于拓展

缺点:

  • 分布式系统开发复杂度高于单体应用
  • 运维要求更高,单体应用只需要维护一个应用,微服务需要维护多个应用
  • 接口调整成本更高。

SpringCloud

SpringCloud是一个基于springboot实现的云应用开发工具,它是一系列框架的集合。

SpringCloud利用springboot的开发便利性,简化了分布式系统基础组件的开发。SpringCloud的核心功能主要有:

  • 分布式/版本管理
  • 服务注册与发现
  • 服务路由
  • 服务之间的调用
  • 负载均衡
  • 断路器
  • 分布式消息传递
  • api网关
  • 消息驱动消息总线
  • 认证与授权
  • 服务链路追踪。

开发一个简单的SpringCloud微服务应用实例

基于springboot进行开发,springboot选择的版本为2.0.6.RELEASE ,SpringCloud版本为 Finchley.RELEASE,一共有三个服务:

  • 服务注册中心:eureka
  • 服务提供者:producer
  • 服务调用者:consumer

eureka开发

  1. 新建一个基于springboot的项目,项目名:eureka。
  2. 在pom.xml文件中导入SpringCloud依赖:
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SpringCloud(一)——微服务基础及简单微服务项目搭建 的相关文章

  • Nacos配置文件 Param ‘serviceName‘ is illegal, serviceName is blank

    今天学习NACOS配置文件时 报错Param serviceName is illegal serviceName is blank 但是我在bootstrap yml文件中配置了服务名 父工程引入的依赖版本为最新的2021 1
  • Spring Boot 2.x整合微信支付项目实战

    资料 zip 第 1 章项目介绍和前期准备 1 1 SpringBoot整合微信支付开发在线教育视频站点介绍 ts 1 2 中大型公司里面项目开发流程讲解 ts 1 3 在线教育站点需求分析和架构设计 ts 1 4 在线教育后台数据库设计
  • 微服务初始

    今天准备开始学习微服务 使用微服务肯定是因为他有好处 首先了解到的三种架构 传统单体 集群架构 微服务架构 单体架构 有单点问题 如果宕机所有的服务都不可用 所有业务的功能模块都聚集在一起 如果代码量多 功能之前如果有很多共同的代码 不同业
  • 以数据为中心的标记语言-->yaml

    目录 一 yaml 介绍 二 yaml 基本语法 三 数据类型 1 字面量 2 对象 3 数组 四 yaml 应用实例 1 需求 2 需求图解 3 代码实现 五 yaml 使用细节 一 yaml 介绍 YAML 是 YAML Ain t a
  • K8s微服务从0到1入门及命令实战

    写在前面 本文主要介绍k8s的核心概念 基础语法 常用命令和常用操作 Kubernetes介绍 Kubernetes是一种流行的开源容器编排和管理系统 它的目标是简化部署 扩展和管理容器化应用程序 Kubernetes最初由Google开发
  • 【微服务】一张图搞懂微服务架构设计

    一张图搞懂微服务架构设计 1 前言 2 流量入口 Nginx 3 网关 4 业务组件 5 服务注册中心 6 缓存和分布式锁 7 数据持久层 8 结构型数据存储 9 消息中间件 10 日志收集 11 任务调度中心 12 分布式对象存储 1 前
  • 云原生微服务应用的平台工程实践

    作者 纳海 01 微服务应用云原生化 微服务是一个广泛使用的应用架构 而如何使得微服务应用云原生化却是近些年一直在演进的课题 国内外云厂商对云原生概念的诠释大同小异 基本都会遵循 CNCF 基金会的定义 云原生技术有利于各组织在公有云 私有
  • 【业务功能篇78】微服务-前端后端校验- 统一异常处理-JSR-303-validation注解

    5 前端校验 我们在前端提交的表单数据 我们也是需要对提交的数据做相关的校验的 Form 组件提供了表单验证的功能 只需要通过 rules 属性传入约定的验证规则 并将 Form Item 的 prop 属性设置为需校验的字段名即可 校验的
  • 基于SpringBoot-Dubbo的微服务快速开发框架

    简介 基于Dubbo的分布式 微服务基础框架 为前端提供脚手架开发服务 结合前一篇 Web AP快速开发基础框架 可快速上手基于Dubbo的分布式服务开发 项目代码 https github com backkoms web service
  • Thrift、Dubbo、Spring Cloud 和 gRPC

    何为RPC RPC Remote Procedure Call 远程过程调用 是一种进程间通信方式 是一种技术的思想 而不是规范 它允许程序调用另一个地址空间 通常是共享网络的另一台机器上 的过程或函数 而不用程序员显式编码这个远程调用的细
  • 为分布式做准备吧——分布式服务架构设计概述

    文章目录 分布式服务框架设计架构原理 通信框架 长连接还是短链接 BIO还是NIO 序列化与反序列化 协议栈 服务路由 基于服务注册中心的订阅发布 集群容错 服务降级 分布式消息跟踪 分布式服务框架设计架构原理 通常 分布式服务框架的架构可
  • 【业务功能篇104】 补充【业务功能篇99】微服务-springcloud-springboot-电商订单模块--整合支付

    在前面我们业务功能篇98 99中 我们介绍了电商项目中的订单模块服务 那么最后就是需要进行支付动作 那么我们这里就通过订阅第三方平台支付宝的支付调用接口功能 来进一步完成订单提交后的支付动作 支付宝的接口使用可以登录官网开发指南详情去了解
  • 世界两万英尺范围内,均分布有运维体系架构

    几年前 Microsoft 与技术领先的社区专家合作发布了一本受欢迎的指导书 标题为 适用于容器化 NET 应用程序的 NET 微服务 深入探讨了构建分散式应用程序的原则 模式和最佳做法 其中包括一个功能齐全的微服务参考应用程序 展示了体系
  • 【微服务架构设计】微服务不是魔术:处理超时

    微服务很重要 它们可以为我们的架构和团队带来一些相当大的胜利 但微服务也有很多成本 随着微服务 无服务器和其他分布式系统架构在行业中变得更加普遍 我们将它们的问题和解决它们的策略内化是至关重要的 在本文中 我们将研究网络边界可能引入的许多棘
  • 一文打通Sleuth+Zipkin 服务链路追踪

    1 为什么用 微服务架构是一个分布式架构 它按业务划分服务单元 一个分布式系统往往有很多个服务单元 由于服务单元数量众多 业务的复杂性 如果出现了错误和异常 很难去定位 主要体现在 一个请求可能需要调用很多个服务 而内部服务的调用复杂性 决
  • SpringCloud概述

    SpringCloud概述 1 SpringCloud是什么 2 SpringCloud和SpringBoot关系 3 Dubbo和SpringCloud技术选型 4 SpringCloud作用 1 SpringCloud是什么 现代化的J
  • 10 微服务流程规范篇:高速迭代的研发过程需要怎样的规范?

    上一课时 我讲解了微服务质量保障体系的全景概览 本课时我主要讲解流程规范 高速迭代的研发过程需要怎样的规范呢 业务流程阶段 众所周知 产品研发是为业务服务的 在深入讲解产品研发流程之前 我们先整体看下业务流程 分为 3 个阶段 产品研发阶段
  • GoLong的学习之路,进阶,微服务之序列化协议,Protocol Buffers V3

    这章是接上一章 使用 RPC包 序列化中没有详细去讲 因为这一块需要看的和学习的地方很多 并且这一块是RPC中可以说是最重要的一块 也是性能的重要影响因子 今天这篇主要会讲其使用方式 文章目录 Protocol Buffers V3 背景以
  • 第六章--- 实现微服务:匹配系统(下)

    0 写在前面 这一章终于完了 但是收尾工作真的好难呀QAQ 可能是我初学的缘故 有些JAVA方面的特性不是很清楚 只能依葫芦画瓢地模仿着用 特别是JAVA的注解 感觉好多但又不是很懂其中的原理 只知道要在某个时候用某个注解 我真是有够菜的
  • 2023 年精选:每个 DevOps 团队都应该了解的 5 种微服务设计模式

    微服务彻底改变了应用程序开发世界 将大型整体系统分解为更小 更易于管理的组件 这种架构风格的特点是独立 松散耦合的服务 带来了从可扩展性 模块化到更高的灵活性等众多优势 DevOps 团队如何最好地利用这种方法来实现最高效率 答案在于理解并

随机推荐

  • 【netty】Netty粘包问题TooLongFrameException: Adjusted frame length exceeds

    文章目录 1 概述 1 概述 此问题参考 Flink Flink 任务报错 akka remote connection TooLongFrameException adjusted frame length discarded 我这里主要
  • 边缘计算概念以及应用

    什么是边缘计算 边缘计算是为应用开发者和服务提供商在网络的边缘侧提供云服务和IT环境服务 边缘计算的目标是在靠近数据输入或用户的地方提供计算 存储和网络带宽 边缘计算 是一种分散式运算的架构 在这种架构下 将应用程序 数据资料与服务的运算
  • R语言之词云:wordcloud&wordcloud2安装及参数说明

    一 wordcloud安装说明 install packages wordcloud 二 wordcloud2安装说明 install packages devtools devtools install github lchiffon w
  • 心电信号越界怎么回事_心电图机的干扰及其正确处理方法

    心电图机是记录人体体表各点随时间而变化的心电波形的医疗仪器 医生根据心电图机所记录的波形的形态 波幅大小以及各波之间的相对时间关系来鉴别诊断心脏疾病 因此 心电图机所记录的心电图的精确度对于心脏疾病的鉴别诊断至关重要 但是 由于心电信号比较
  • JAVA面试常考

    1 自我介绍 讲下最有难度的项目 2 对线程安全的理解 3 比如有一个局部变量i 1 两个线程同时执行 是否线程安全 4 比如再有一个共享变量 如何保证线程安全 5 说说ThreadLocal 底层如何实现 6 hashmap实现原理 7
  • 【BATCHNORMALIZATION、LAYERNORMALIZATION、INSTANCENORMALIZATION和GROUPNORMALIZATION】

    总览 神经网络中有各种归一化算法 Batch Normalization BN Layer Normalization LN Instance Normalization IN Group Normalization GN 从公式看它们都差
  • ServerSocket 的建立与使用(多线程)

    1 main方法 package peixun public class MyServerSocket public static void main String args new ServerListener start 2 建立连接
  • 多元线性回归的梯度下降

    目录 1 线性回归的基本概念 2 线性回归算法 3 多元梯度下降算法 4 总结 1 线性回归的基本概念 在回归分析中 如果只包含一个自变量和一个因变量 且二者关心可近似用一条直线表示 则称该回归分析为一元线性回归分析 如果包含两个及两个以上
  • 多模态(图像和文本跨模态)分类

    文章目录 前言 一 数据集介绍 二 处理过程 1 处理图片文本标签数据 1 将label由消极 中立 积极的标签变成数字 0 1 2 并且将其保存在path2label字典中 2 分别将图像文件和文本文件形成列表 3 分别将文本内容 对应的
  • 计算机插本2a院校,广东省专插本2A院校有哪些

    满意答案 yandianhua 2012 12 23 采纳率 45 等级 12 已帮助 15307人 晨光英语考试团很荣幸为您解答 2011年广东省本科插班生招生院校名单 院校代码 院校名称 以下院校是2A线的 533 深圳大学 534 五
  • 刷题之455. 分发饼干 -----贪心初试

    假设你是一位很棒的家长 想要给你的孩子们一些小饼干 但是 每个孩子最多只能给一块饼干 对每个孩子 i 都有一个胃口值 g i 这是能让孩子们满足胃口的饼干的最小尺寸 并且每块饼干 j 都有一个尺寸 s j 如果 s j gt g i 我们可
  • 性能测试浅谈

    早期的性能测试更关注后端服务的处理能力 一个用户去访问一个页面的请求过程 如上图 数据传输时间 当你从浏览器输入网址 敲下回车 开始 真实的用户场景请不要忽视数据传输时间 想想你给远方的朋友写信 信件需要经过不同的交通运输工具送到朋友手上
  • 去除移动端h5的横向滚动条

    我的问题是 在移动端第一次访问h5页面时 页面尺寸被放大了一点 没有手机适配 所以出现了横向滚动条 手指缩小页面尺寸后 横向滚动条才消失 解决方案 在入口页面index html的标签里添加下面一行代码
  • Qt中的中信号槽与异步调用

    Qt中使用信号 槽机制处理跨对象之间的调用 该机制的好处有 1 使得调用关系的绑定和解除十分灵活 不必修改类成员函数代码 2 在不暴露更多全局变量的情况下实现跨命名空间调用 3 可以多个信号对应多个槽 也可以信号之间绑定 对应于GUI中的逻
  • python 使用for循环简单爬取图片(1)

    现在的网站大多做了反爬处理 找一个能爬的网站还真不容易 下面开始一步步实现 1 简单爬录目图片 1 import urllib request 2 import re 3 4 def gethtml url 5 page urllib re
  • Spring_AOP_0100_Annotation入门

    为了以后更好的实习 今天了解了一下spring的aop的基础知识 做了一些简单的测试 算入门aop吧 记录下来 方便以后查阅 spring的版本2 5 6 由于目前aspectj的aop比spring做得更出色 而且spring也提倡直接使
  • Jmeter(三十五) - 从入门到精通进阶篇 - 关联(详解教程)

    1 简介 上一篇中介绍了如果想要同时发送多条请求 那么怎样才能让每条数据某些请求参数改变呢 这就用到了jMeter参数化 在实际测试场景中 我们往往还有这样的需求 登录后服务器响应的token作为下次请求的参数 这就是所谓的参数关联 当请求
  • impala目录

    文章目录 1 入门 2 shell命令使用 3 java操作 1 入门 2 shell命令使用 https blog csdn net qq 21383435 article details 84925144 3 java操作
  • 最新xcode打包IPA(完整详细图文)

    网上的xcode打包ipa教程大多太旧而且又不完整 所以整理了一个最新的完整详细的xcode打包APP的图文教程分享给小白到大神路上的你我 xcode打包IPA包之前先申请iOS证书 然后导入证书才能打包导出IPA包 分为5 步进行 1 申
  • SpringCloud(一)——微服务基础及简单微服务项目搭建

    单体应用开发 传统的web应用开发是将所有的功能模块都打包到一个包中一起部署运行 单体应用集成简洁部署简单 但是随着项目复杂的的增加 单体应用会变得越来越大越来越臃肿 每次进行小功能的更新都需要更新整个包重新部署 什么是微服务 微服务没有一