SpringCloud原理分析 | 简介

这篇具有很好参考价值的文章主要介绍了SpringCloud原理分析 | 简介。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

SpringCloud原理分析 | 简介

💗wei_shuo的个人主页

💫wei_shuo的学习社区

🌐Hello World !


分布式原理

SpringCloud原理分析 | 简介

分布式原理是指将一个大型系统分割成多个子系统,每个子系统都运行在不同的计算机上,这些计算机通过网络互相连接,协同完成系统的任务。分布式系统的设计目标是提高系统的可靠性、可扩展性和性能

  • 分布式计算:将大型问题分解成多个小问题,每个小问题由不同的计算机处理,最终将结果合并得到整个问题的解决方案
  • 分布式存储:将数据分散存储在不同的计算机上,通过网络协议进行访问,提高数据存储的可靠性和可扩展性
  • 分布式通信:通过网络协议实现不同计算机之间的通信,包括点对点通信和广播通信等方式,保证分布式系统的协同工作
  • 分布式算法:设计适合分布式系统的算法,包括分布式锁、分布式事务、分布式一致性等,保证分布式系统的正确性和可靠性
  • 分布式安全:保证分布式系统的安全性,包括身份认证、数据加密、访问控制

分布式系统的应用范围非常广泛,例如云计算、大数据处理、分布式数据库、分布式文件系统等

Dubbo

Dubbo是一款基于Java的高性能、轻量级的开源RPC框架,由阿里巴巴公司开发和维护。Dubbo提供了完整的RPC框架和服务治理方案,使得开发者可以轻松地实现远程服务调用和管理。

Dubbo的主要特点包括:

  • 高性能:Dubbo采用了NIO异步非阻塞IO和线程池机制,可以支持高并发和低延迟的RPC调用
  • 轻量级:Dubbo的核心只有几百KB,非常轻量级,可以快速部署和集成到应用中
  • 易扩展:Dubbo提供了完整的服务治理方案,包括服务注册、发现、负载均衡、容错、路由等,可以轻松地实现服务的扩展和管理
  • 多协议支持:Dubbo支持多种协议,包括Dubbo协议、HTTP协议、RESTful协议等,可以满足不同的应用场景
  • 多语言支持:Dubbo提供了多种语言的实现,包括Java、Python、Node.js等,可以满足不同语言的开发需求

Zookeeper

Zookeeper是一个开源的分布式协调服务,可以用于维护和管理分布式系统中的配置信息、命名服务、分布式锁和分布式队列等。它由Apache基金会开发和维护,是一个高性能、可靠、可扩展的分布式协调服务

  • 高可用性:Zookeeper采用了主从架构,可以实现自动故障转移,提高了系统的可用性
  • 高性能:Zookeeper采用了内存数据库和NIO技术,可以支持高并发和低延迟的操作
  • 可扩展性:Zookeeper可以通过集群方式进行横向扩展,可以支持大规模的分布式系统
  • 严格顺序性:Zookeeper提供了严格的顺序性保证,可以保证所有客户端看到的数据是一致的
  • 简单易用:Zookeeper提供了简单易用的API,可以方便地实现分布式系统中的协调和管理

RPC

RPC(Remote Procedure Call,远程过程调用)是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。它允许程序调用远程计算机上的服务,就像调用本地服务一样;在RPC中,客户端应用程序通过发送一个称为“请求”的消息来调用远程服务器上的过程。服务器应用程序在接收到该请求后执行相应的过程,并将结果作为"响应"消息返回给客户端;RPC协议通常使用HTTP、TCP/IP等协议进行通信。常见的RPC框架有gRPC、Thrift、Dubbo

SpringCloud原理分析 | 简介

服务提供者(Provider):暴露服务的服务提供方,服务提供者在启动时,向注册中心注册自己提供的服务

服务消费者(Consumer):调用远程服务的服务消费方,服务消费者在启动时,向注册中心订阅自己所需的服务,服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,选另一台调用

注册中心(Registry):注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者

监控中心(Monitor):服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心

Zookeeper安装使用

  • 官网下载

  • 配置

SpringCloud原理分析 | 简介

  • 启动服务

SpringCloud原理分析 | 简介

SpringCloud原理分析 | 简介

  • 启动服务端再启动客户端即可

SpringCloud原理分析 | 简介

Dubbo-admin安装使用

Dubbo-admin:监控平台,查看被注册的服务

Dubbo-admin下载地址

  • 项目目录下打包dubbo-admin
mvn clean package -Dmaven.test.skip=true
  • 执行打包出来的jar包
java -jar dubbo-admin-0.0.1-SNAPSHOT.jar
  • 浏览器访问:localhost:7001

SpringCloud原理分析 | 简介

SpringCloud原理分析 | 简介

Dubbo-Zookeeper集成SpringBoot

SpringCloud原理分析 | 简介

  • 创建spring框架:provider-service

  • 依赖导入

<dependencies>
        <!--Dubbo-->
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>2.7.3</version>
        </dependency>
        <!--Zookeeper-->
        <dependency>
            <groupId>com.github.sgroschupf</groupId>
            <artifactId>zkclient</artifactId>
            <version>0.1</version>
        </dependency>

        <!-- 引入zookeeper -->
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-framework</artifactId>
            <version>2.12.0</version>
        </dependency>
        <!--新版的坑:zookeeper及其依赖包,解决日志冲突,还需要剔除日志依赖-->
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-recipes</artifactId>
            <version>2.12.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.4.14</version>
            <!--排除这个slf4j-log4j12-->
            <exclusions>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-log4j12</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
  • application.properties
server.port=8001

# 服务应用名字
dubbo.application.name=provider-service
# 注册中心地址
dubbo.registry.address=zookeeper://127.0.0.1:2181
# 注册服务
dubbo.scan.base-packages=com.wei.service
  • service/TicketService
package com.wei.service;

/**
 * @ClassName TicketService
 * @Description TODO
 * @Author wei_shuo
 * @Date 2023/6/2 14:45
 * @Version 1.0
 */

public interface TicketService {

    public String getTicket();
}
  • service/TicketServiceImpl
package com.wei.service;

import org.apache.dubbo.config.annotation.Service;
import org.springframework.stereotype.Component;

/**
 * @ClassName TicketServiceImpl
 * @Description TODO
 * @Author wei_shuo
 * @Date 2023/6/2 14:45
 * @Version 1.0
 */

@Component
@Service
public class TicketServiceImpl implements TicketService{

    @Override
    public String getTicket() {
        return "wei";
    }

}
  • 创建spring框架:consumer-service

  • 依赖导入

<dependencies>
        <!--Dubbo-->
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>2.7.3</version>
        </dependency>
        <!--Zookeeper-->
        <dependency>
            <groupId>com.github.sgroschupf</groupId>
            <artifactId>zkclient</artifactId>
            <version>0.1</version>
        </dependency>

        <!-- 引入zookeeper -->
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-framework</artifactId>
            <version>2.12.0</version>
        </dependency>
        <!--新版的坑:zookeeper及其依赖包,解决日志冲突,还需要剔除日志依赖-->
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-recipes</artifactId>
            <version>2.12.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.4.14</version>
            <!--排除这个slf4j-log4j12-->
            <exclusions>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-log4j12</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
  • application.properties
server.port=8002

# 消费者暴露自己的名字
dubbo.application.name=consumer-service
# 注册中心的地址
dubbo.registry.address=zookeeper://127.0.0.1:2181
  • service/TicketService
package com.wei.service;

/**
 * @ClassName TicketService
 * @Description TODO
 * @Author wei_shuo
 * @Date 2023/6/2 14:45
 * @Version 1.0
 */

public interface TicketService {

    public String getTicket();
}

  • service/UserService
package com.wei.service;

import org.apache.dubbo.config.annotation.Reference;
import org.springframework.stereotype.Service;

/**
 * @ClassName UserService
 * @Description TODO
 * @Author wei_shuo
 * @Date 2023/6/2 14:46
 * @Version 1.0
 */

@Service
public class UserService {

    //注册中心获取服务
    @Reference
    TicketService ticketService;

    public void buyTicket() {
        String ticket = ticketService.getTicket();
        System.out.println("注册中心获取一张票" + ticket);       //注册中心获取一张票wei
    }
}
启动
  • 启动zkServer:Zookeeper

  • 启动Dubbo-admin

  • 运行provider-service

  • 浏览器访问:localhost:7001

SpringCloud原理分析 | 简介

  • 启动consumer-service

控制台输出:注册中心获取一张票wei


活动赞助

618,清华社 IT BOOK 多得图书活动开始啦!活动时间为 2023 年 6 月 7 日至 6 月 18 日,清华社为您精选多款高分好书,涵盖了 C++、Java、Python、前端、后端、数据库、算法与机器学习等多个 IT 开发领域,适合不同层次的读者。全场 5 折,扫码领券更有优惠哦!快来京东点击链接 IT BOOK 多得(或扫描京东二维码)查看详情吧!

京东链接

点击购买:https://pro.m.jd.com/mall/active/3Rho97HkMaGFycLzAWfFdvZdyvRn/index.html

SpringCloud原理分析 | 简介

🌼 结语:创作不易,如果觉得博主的文章赏心悦目,还请——点赞👍收藏⭐️评论📝


SpringCloud原理分析 | 简介文章来源地址https://www.toymoban.com/news/detail-478421.html

到了这里,关于SpringCloud原理分析 | 简介的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 详解SpringCloud微服务技术栈:强推!源码跟踪分析Ribbon负载均衡原理、Eureka服务部署

    👨‍🎓作者简介:一位大四、研0学生,正在努力准备大四暑假的实习 🌌上期文章:详解SpringCloud微服务技术栈:认识微服务、服务拆分与远程调用 📚订阅专栏:微服务技术全家桶 希望文章对你们有所帮助 服务提供者:一次业务中,被其它微服务调用的服务(提供接口给

    2024年01月18日
    浏览(33)
  • 【SpringCloud技术专题】「Gateway网关系列」(1)微服务网关服务的Gateway组件的原理介绍分析

    为什么要有服务网关? 我们都知道在微服务架构中,系统会被拆分为很多个微服务。那么作为客户端要如何去调用这么多的微服务呢?难道要一个个的去调用吗?很显然这是不太实际的,我们需要有一个统一的接口与这些微服务打交道,这就是我们需要服务网关的原因。 我们

    2024年02月11日
    浏览(34)
  • Eureka(服务注册和发现)——Eureka的简介和原理 & Eureka的使用和分析 & 心跳续约策略,服务的下线和剔除,自我保护 & Eureka集群的搭建

    Eureka:服务注册与发现组件,用于实现服务的自动注册与发现,Spring Cloud Eureka 是对Netflix公司的Eureka的二次封装,它实现了服务治理的功能,Spring Cloud Eureka提供服务端与客户端,服务端即是Eureka服务注册中心,客户端完成微服务向Eureka服务的注册与发现。服务端和客户端均采

    2024年02月05日
    浏览(29)
  • 微服务简介,Springcloud-alibaba中的Nacos简介

    目录 一:微服务架构 1.0:单体架构 1.1:微服务架构 1.2:微服务架构的优势 1.3:微服务架构的缺点(挑战) 1.4:SpringCloud与微服务关系 1.5:SpringBoot和SpringCloud关系 二:服务注册与发现 2.1:服务注册与发现 2.2:注册中心对比 nacos功能与架构 三:nacos简介 nacos功能:  nacos安装

    2024年02月10日
    浏览(37)
  • SpringCloud之Gateway组件简介

    网关的理解 网关类似于 海关 或者 大门 , 出入都需要经过这个网关 。别人不经过这个网关,永远也看不到里面的东西。可以在网关进行 条件过滤 ,比如大门只有对应的钥匙才能入内。网关和大门一样,永远暴露在最外面 不使用网关 前端需要记住每一个服务的IP和port 如果

    2023年04月19日
    浏览(21)
  • [SpringCloud] Eureka 与 Ribbon 简介

    目录 一、服务拆分 1、案例一:多端口微服务 2、案例二:服务远程调用 二、Eureka 1、Eureka 原理分析 2、Eureka 服务搭建(注册 eureka 服务) 3、Eureka 服务注册(注册其他服务) 4、Eureka 服务发现(服务拉取) 三、Ribbon 负载均衡  1、负载均衡原理 2、负载均衡策略 3、饥饿加载

    2024年02月08日
    浏览(31)
  • [SpringCloud] Feign 与 Gateway 简介

    目录 一、Feign 简介 1、RestTemplate 远程调用中存在的问题 2、定义和使用 Feign 客户端 3、Feign 自定义配置 4、Feign 性能优化 5、Feign 最佳实践 6、Feign 使用问题汇总 二、Gateway 网关简介 1、搭建网关服务 2、路由断言工厂 3、路由的过滤器配置 4、全局过滤器 5、过滤器链执行顺序

    2024年02月06日
    浏览(29)
  • SpringCloud(二)Eureka简介与依赖导入

      Eureka能够自动注册并发现微服务,然后对服务的状态、信息进行集中管理,这样当我们需要获取其他服务的信息时,我们只需要向Eureka进行查询就可以了。   像这样的话,服务之间的强关联性就会被进一步削弱。 那么现在我们就来搭建一个Eureka服务器,只需要创建一个新

    2024年02月08日
    浏览(29)
  • SpringCloud入门实战(七)-Hystrix入门简介

    📝 学技术、更要掌握学习的方法,一起学习,让进步发生 👩🏻 作者:一只IT攻城狮 。 💐学习建议:1、养成习惯,学习java的任何一个技术,都可以先去官网先看看,更准确、更专业。 💐学习建议:2、然后记住每个技术最关键的特性(通常一句话或者几个字),从主线入

    2024年02月05日
    浏览(25)
  • 微服务springcloud 01 sts环境,maven管理,和springcloud简介,通用模块commons

    01.使用的环境是sts和maven。 02.介绍springcloud springcloud是一个大的微服务框架。 03.Spring cloud对比Dubbo Dubbo Dubbo只是一个远程调用(RPC)框架;默认基于长连接,支持多种序列化格式 Spring Cloud 框架集,提供了一整套微服务解决方案(全家桶);基于http调用;Rest API 04.项目实现 第一步:创建

    2024年02月09日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包