• SpringCloud


    ---恢复内容开始---

    微服务的核心就是将传统的一站式应用,根据业务拆分成一个一个的服务,彻底地去耦合,每一个微服务提供单个业务功能的服务,一个服务做一件事,从技术角度看就是一种小而独立的处理过程,类似进程概念,能够自行单独启动,或销毁,拥有自己独立的数据库。

    微服务的架构:是一种架构模式,提倡将单一应用程序划分成一组小的服务,服务之间互相协调,互相配合,为用户提供最终价值,每个服务运行在其独立的进程中

    每个服务围绕着具体业务进行构建,并且能够被独立的部署到生产环境,应当尽量避免统一的,集中式的服务管理机制

    针对具体的一个服务而言,应根据业务上下文选择合适的语言,工具对其进行构建。 

    微服务优点:足够内聚,足够小,代码容易理解,一个服务负责一个业务

                               能够被小团队单独开发

                               松耦合

                               用不同的语言开发

                               易于和第三方集成

    微服务只是业务逻辑的代码,不会和html,css或其他界面组件混合

    每个微服务都有自己的存储能力,可以有自己的数据库,也可以有统一的数据库

    缺点:开发人员要处理分布式系统的复杂性 

              多服务运维难度

               系统部署依赖

                服务间的通信成本

                 数据一致性

                系统集成测试

                性能监控

    阿里 dubbo  京东 JSF 新浪微博Motan  当当网dubbo

     

    dubbo和springCloud对比

     

    Dubbo

    SpringCloud

    服务注册中心

    Zookeeper

    SpringCloud Netflix eureka

    服务调用方式

    RPC

    REST API

    服务监控

    Dubbo-monitor

    SpringBoot Admin

    断路器

    不完善

    SpringCloud Netflix Hystrix

    服务网关

    SpringCloud netfix  Zuu

    分布式配置

    SpringCloud Config

    服务跟踪

    SpringCloud Sleuth

    消息总线

    SpringCloud Bus

    数据流

    SpringCloud Stream

    批量服务

    SpringCloud Task

    dubbo可以满足企业的需求,但是更好的东西,大家更愿意去使用(Spring cloud)

    最大区别:SpringCloud抛弃了Dubbo的rpc通信,采用的是基于HTTP的REST方式

    SpringCloud基于SpringBoot提供了一套服务解决方案,包括服务注册中心与发现,配置中心,全链路监控,服务网关,负载均衡,熔断器等组件,除了基于Netflix的开源组件做高度抽象封装

    SpringBoot提供了一套简单易懂、易部署和易维护的分布式系统开发工具

    SpringCloud=分布式微服务架构下的一站式解决方案,是各个微服务架构落地技术的集合体,( 微服务全家桶)

    SpringBoot专注于快速方便的开发单个个体微服务

    SpringCloud是关注全局的微服务协调整理治理框架,它将SpringBoot开发的一个个单体微服务整合并管理起来,为各个微服务质检提供配置管理、服务发现、断路器、路由、微代理、事件总线、全局锁、决策竞选

    SpringBoot可以离开SpringCloud独立使用开发项目,但是SpringCloud离不开SpringBoot,属于依赖关系(SpringCloud依赖于SpringBoot)

    SpringBoot专注于快速、方便的开发单个微服务个体,SpringCloud关注全局的服务治理框架

     

    一个Project带着多个Module子模块

    Txservicecloud父工程(Project)下初次带着3个子模块(Module)

    txservicecloud-common封装的整体entity接口/公共配置

    txservicecloud-provider-dept-8001  微服务落地的服务提供者

    txservicecloud-consumer-dept-80   微服务调用的客户端使用

    @SpringBootApplication

    @RequestMapping

    @Autowired

    @Configuration

    @RestController

    @Bean

    @RestTemplate:Spring访问的一种模板,注入mvc容器中

    @EnableEurekaService

    @EnableEureKaClient

    Eureka是NetFlix的一个子模块,也是核心模块,EureKa是一个基于REST的服务,用于定位服务,以实现云端中间层服务发现 和故障转移

    只需要使用服务的标识符,就可以访问到服务(dubbo的注册中心,zookeeper)

     SpringCloud封装了Netflix公司开发的EureKa模块来实现服务注册和发现

    EureKa采用C-S的设计架构,EureKaServer作为服务注册功能的服务器,服务注册中心

    EureKa包含两个组件:EureKa Server和EureKa Client

    EureKa Server提供服务注册服务

    各个节点启动后,会EureKa Server中进行注册;EureKa Server中的服务注册表中将会存储所有可用服务节点的信息

    EureKa Server 提供服务注册和发现

    Service Provider服务提供方将自身服务注册到EureKa,从而使服务消费方能够找到

    Service  Consumer服务消费方从EureKa获取注册服务列表,从而能够消费

    .yml配置文件

    server:

      port: 8888

    eureka:

      instance:

       hostname:localhost

    client:

        register-with-eureka:false

       fetch-registry:false

       service-url:

        defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

     

     

    eureka:

          client:

             service-url:

                defaultZone:http://localhost:7001/eureka/

    instance:

           instance-id:txservicecloud-dep-8001

           prefer-ip-address:true

     

     

    加入Actuator依赖:

            <dependency>

               <groupId>org.springframework.boot</groupId>

               <artifactId>spring-boot-starter-actuator</artifactId>

            </dependency>

    <build>

                       <finalName>txservicecloud</finalName>

                            <resources>

                                         <resource>

                                       <directory>src/main/resources</directory>

                                       <filtering>true</filtering>

                                   </resource>

                              </resources>

                              <plugins>

                                    <plugin>

                                      <groupId>org.apache.maven.plugins</groupId>

                                      <artifactId>maven-resources-plugin</artifactId>

                                      <configuration>

                                             <delimiters>

                                                  <delimit>@</delimit>

                                                </delimiters>

                                       </configuration>

                                      </plugin>

                                  </plugins>

    </build>

     

    因为微服务本身其实使健康的,此时本不应该注销这个微服务

    Eureka通过“自我保护模式”

    Eureka集群配置,就是多个Eureka进行配置,然后一起工作

    改端口,改yml配置文件

     

    如何包含Eureka客户端

    要在您的项目中包含Eureka客户端,使用组org.springframework.cloud和工件id spring-cloud-starter-eureka的启动器。有关 使用当前的Spring Cloud发布列表设置构建系统的详细信息,请参阅Spring Cloud项目页面

    注册Eureka

    当客户端注册Eureka时,它提供有关自身的元数据,例如主机和端口,运行状况指示符URL,主页等。Eureka从属于服务的每个实例接收心跳消息。如果心跳失败超过可配置的时间表,则通常将该实例从注册表中删除。

    示例eureka客户端:

    @Configuration
    @ComponentScan
    @EnableAutoConfiguration
    @EnableEurekaClient
    @RestController
    public class Application {
    
        @RequestMapping("/")
        public String home() {
            return "Hello world";
        }
    
        public static void main(String[] args) {
            new SpringApplicationBuilder(Application.class).web(true).run(args);
        }
    
    }

    (即完全正常的Spring Boot应用程序)。在这个例子中,我们明确地使用@EnableEurekaClient,但只有Eureka可用,你也可以使用@EnableDiscoveryClient。需要配置才能找到Eureka服务器。例:

    application.yml
    eureka:
      client:
        serviceUrl:
          defaultZone: http://localhost:8761/eureka/

    其中“defaultZone”是一个魔术字符串后备值,为任何不表示首选项的客户端提供服务URL(即它是有用的默认值)。

    Environment获取的默认应用程序名称(服务ID),虚拟主机和非安全端口分别为${spring.application.name}${spring.application.name}${server.port}

    @EnableEurekaClient使应用程序成为Eureka“实例”(即注册自身)和“客户端”(即它可以查询注册表以查找其他服务)。实例行为由eureka.instance.*配置键驱动,但如果您确保您的应用程序具有spring.application.name(这是Eureka服务标识或VIP的默认值),那么默认值将会很好。

    有关可配置选项的更多详细信息,请参阅EurekaInstanceConfigBeanEurekaClientConfigBean

    使用Eureka服务器进行身份验证

    如果其中一个eureka.client.serviceUrl.defaultZone URL中包含一个凭据(如http://user:password@localhost:8761/eureka)),HTTP基本身份验证将自动添加到您的eureka客户端。对于更复杂的需求,您可以创建@Bean类型DiscoveryClientOptionalArgs并注入ClientFilter实例,所有这些都将应用于从客户端到服务器的调用。

    ---恢复内容结束---

  • 相关阅读:
    合约广告系统-在线分配问题
    合约广告系统-合约广告系统
    合约广告系统-常用广告系统开源工具
    knnsearch
    ISOMAP和MDS降维
    dijstra算法
    矩阵大于某个数置零
    mathtype 公式分节隐藏
    fifo 实现问题
    vhdl 数据类型转换 使用IEEE标准库numeric_std 需要进行两次转换 use ieee.numeric_std.all;
  • 原文地址:https://www.cnblogs.com/cye9971-/p/10803648.html
Copyright © 2020-2023  润新知