• SpringCloud学习一


    单体应用存在的问题

    • 随着业务的发展,开发变得越来越复杂。

    • 修改、新增某个功能,需要对整个系统进行测试、重新部署。

    • 一个模块出现问题,很可能导致整个系统崩溃

    • 多个开发团队同时对数据进行管理,容易产生安全漏洞

    • 各个模块使用同一种技术进行开发,各个模块很难根据实际情况选择更合适的技术框架,局限性很大。

    • 模块内容过于复杂,如果员工离职,可能需要很长时间才能完成工作交接。

    分布式、集群

    集群:一台服务器无法负荷高并发的数据访问量,那么就设置十台服务器一起分担压力,十台不行就设置一百台(物理层面)。很多人干同一件事情,来分摊压力。

    分布式:将一个复杂问题拆分成若干个简单的小问题,将一个大型的项目架构拆分成若干个微服务来协同完成。(软件设计层面)。将一个庞大的工作拆分成若干个小步骤,分别由不同的人完成这些小步骤,最终将所有的结果进行整合实现大的需求。

    服务治理的核心又三部分组成:服务提供者、服务消费者、注册中心。

    在分布式系统架构中,每个微服务在启动时,将自己的信息存储在注册中心,叫做服务注册。

    服务消费者从注册中心获取服务提供者的网络信息,通过该信息调用服务,叫做服务发现。

    Spring Cloud 的服务治理使用 Eureka 来实现,Eureka 是 Netflix 开源的基于 REST 的服务治理解决方案,Spring Cloud 集成了 Eureka,提供服务注册和服务发现的功能,可以和基于 Spring Boot 搭建的微服务应用轻松完成整合,开箱即用,Spring Cloud Eureka。

    Spring Cloud Eureka

    • Eureka Server,注册中心

    • Eureka Client,所有要进行注册的微服务通过 Eureka Client 连接到 Eureka Server,完成注册。

    Eureka Server代码实现

    整体结构:

    • 创建父工程,pom.xml

    1. <parent>
    2. <groupId>org.springframework.bootgroupId>
    3. <artifactId>spring-boot-starter-parentartifactId>
    4. <version>2.0.7.RELEASEversion>
    5. parent>
    6. <dependencies>
    7. <dependency>
    8. <groupId>org.springframework.bootgroupId>
    9. <artifactId>spring-boot-starter-webartifactId>
    10. dependency>
    11. <dependency>
    12. <groupId>javax.xml.bindgroupId>
    13. <artifactId>jaxb-apiartifactId>
    14. <version>2.3.0version>
    15. dependency>
    16. <dependency>
    17. <groupId>com.sun.xml.bindgroupId>
    18. <artifactId>jaxb-implartifactId>
    19. <version>2.3.0version>
    20. dependency>
    21. <dependency>
    22. <groupId>com.sun.xml.bindgroupId>
    23. <artifactId>jaxb-coreartifactId>
    24. <version>2.3.0version>
    25. dependency>
    26. <dependency>
    27. <groupId>javax.activationgroupId>
    28. <artifactId>activationartifactId>
    29. <version>1.1.1version>
    30. dependency>
    31. dependencies>
    32. <dependencyManagement>
    33. <dependencies>
    34. <dependency>
    35. <groupId>org.springframework.cloudgroupId>
    36. <artifactId>spring-cloud-dependenciesartifactId>
    37. <version>Finchley.SR2version>
    38. <type>pomtype>
    39. <scope>importscope>
    40. dependency>
    41. dependencies>
    42. dependencyManagement>
    • 在父工程下创建 Module,pom.xml
    1. <dependencies>
    2. <dependency>
    3. <groupId>org.springframework.cloudgroupId>
    4. <artifactId>spring-cloud-starter-netflix-eureka-serverartifactId>
    5. <version>2.0.2.RELEASEversion>
    6. dependency>
    7. dependencies>
    • 创建配置文件 application.yml,添加 Eureka Server 相关配置。
    1. server:
    2. port: 8761
    3. eureka:
    4. client:
    5. register-with-eureka: false
    6. fetch-registry: false
    7. service-url:
    8. defaultZone: http://localhost:8761/eureka/

    > 属性说明

    `server.port`:当前 Eureka Server 服务端口。

    `eureka.client.register-with-eureka`:是否将当前的 Eureka Server 服务作为客户端进行注册。

    `eureka.client.fetch-fegistry`:是否获取其他 Eureka Server 服务的数据。

    `eureka.client.service-url.defaultZone`:注册中心的访问地址。

    • 创建启动类
    1. import org.springframework.boot.SpringApplication;
    2. import org.springframework.boot.autoconfigure.SpringBootApplication;
    3. import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
    4. @SpringBootApplication
    5. @EnableEurekaServer
    6. public class EurekaServerApplication {
    7. public static void main(String[] args) {
    8. SpringApplication.run(EurekaServerApplication.class,args);
    9. }
    10. }

    注解说明:

    @SpringBootApplication:声明该类是 Spring Boot 服务的入口。

    @EnableEurekaServer:声明该类是一个 Eureka Server 微服务,提供服务注册和服务发现功能,即注册中心。

    运行:

    浏览器输入:

    localhost:8761

    Eurekaicon-default.png?t=N7T8http://localhost:8761/

  • 相关阅读:
    第19章 特殊工具与技术【C++】
    阶乘(Python)
    python基础(八)文件
    今日睡眠质量记录80分
    期货开户流程和手续费如何调整
    Java面试题--RocketMQ
    Java语法基础案例
    使用eclipce ,将java项目打包成jar包
    Postgresql随手记(10)动态执行EXECUTING语法解析过程
    VR技术的应用与发展_华锐互动
  • 原文地址:https://blog.csdn.net/qq_57747969/article/details/133619764