微服务Springcloud开弓之框架搭建《一》

出现ombok.javac.apt.LombokProcessor could not be initialized. Lombok will not run的解决方法 java: lombok.javac.apt.LombokProcessor could not be initialized. Lombok will not run during this compilation: java.lang.IllegalArgumentException: com.sun.tools.javac.main.DelegatingJavaFileManager$DelegatingSJFM extends com.sun.tools.javac.main.Delegating. 阅读详情


微服务体系

  • 服务注册与发现
  • 配置中心管理
  • 服务调用
  • 服务网关
  • 服务熔断
  • 服务监控
  • 负载均衡
  • 全链路跟踪
  • 服务降级
  • 自动化构建部署
  • 服务消息队列
  • 服务定时任务调度操作

对微服务的实现

  • Eureka : 服务注册与发现
  • Netelix Ribbon: 服务负载与调用
  • Netelix Feign: 服务负载与调用
  • Hystrix : 服务熔断与降级
  • Netelix Zuul : 服务网关
  • Spring Cloud config :服务分布式配置
  • SpringBoot : 服务开发

版本依赖关系

Cload Release TrainBoot Version
Hoxton2.2.x
Greenwich2.1.x
Finchley2.0.x
Edgware1.5.x
Dalston1.5.xz

技术选型

技术版本
cloudHoxton.SR1
boot2.2.2.RELEASE
cloud alibaba2.1.0.RELEASE
java1.8
Maven3.5.4
Mysql5.7及以上

微服务技术现在状况

在这里插入图片描述

父工程的搭建

1、New Project 勾选site简单

2、聚合总父工程名字

3、Maven选版本

4、工程名字

5、字符编码

6、 注解生效激活 File | Settings | Build, Execution, Deployment | Compiler | Annotation Processors

7、. java编译版本选8

父工程依赖

 <groupId>com.atguigu.springcloud</groupId>
  <artifactId>cloud2020</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>pom</packaging>

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
    <junit.version>4.12</junit.version>
    <log4j.version>1.2.17</log4j.version>
    <lombok.version>1.16.18</lombok.version>
    <mysql.version>8.0.17</mysql.version>
    <druid.version>1.1.16</druid.version>
    <spring.boot.version>2.2.2.RELEASE</spring.boot.version>
    <spring.cloud.version>Hoxton.SR1</spring.cloud.version>
    <spring.cloud.alibaba.version>2.1.0.RELEASE</spring.cloud.alibaba.version>
    <mybatis.spring.boot.version>1.3.0</mybatis.spring.boot.version>
  </properties>

  <!--子模块继承后,提供作用:锁定版本+子module不用groupId和version-->
  <dependencyManagement>
    <dependencies>
      <!--springboot 2.2.2-->
      <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>${mybatis.spring.boot.version}</version>
      </dependency>
      <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid-spring-boot-starter</artifactId>
        <version>${druid.version}</version>
      </dependency>
      <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-dependencies</artifactId>
        <version>${spring.boot.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <!--Spring cloud Hoxton.SR1-->
      <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-dependencies</artifactId>
        <version>${spring.cloud.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <!--Spring cloud alibaba 2.1.0.RELEASE-->
      <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-alibaba-dependencies</artifactId>
        <version>${spring.cloud.alibaba.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>${mysql.version}</version>
      </dependency>
      <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid</artifactId>
        <version>${druid.version}</version>
      </dependency>
      <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>${lombok.version}</version>
      </dependency>
    </dependencies>
  </dependencyManagement>

  <build>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
        <configuration>
          <fork>true</fork>
          <addResources>true</addResources>
        </configuration>
      </plugin>
    </plugins>
  </build>

  <!--第三方maven私服-->
  <repositories>
    <repository>
      <id>nexus-aliyun</id>
      <name>Nexus aliyun</name>
      <url>http://maven.aliyun.com/nexus/content/groups/public</url>
      <releases>
        <enabled>true</enabled>
      </releases>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
    </repository>
  </repositories>

注意

父工程创建完成执行mvn:insall将父工程发布到仓库方便子工程继承

Rest微服务工程搭建

构建步骤

1. Cloud-provider-payment8001 微服务提供者Module模块
  • 建module

  • 改POM

      <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-actuator</artifactId>
            </dependency>
            <dependency>
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-starter</artifactId>
            </dependency>
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid-spring-boot-starter</artifactId>
            </dependency>
            <!--mysql-connector-java-->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-jdbc</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-devtools</artifactId>
                <scope>runtime</scope>
                <optional>true</optional>
            </dependency>
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <optional>true</optional>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
    
  • 写YML

    server:
      port: 8001
    
    spring:
      application:
        name: cloud-provider-service
      datasource:
        username: root
        password: 123
        url: jdbc:mysql://localhost:3306/db2019?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8
        driver-class-name: com.mysql.cj.jdbc.Driver
        type: com.alibaba.druid.pool.DruidDataSource
    
    mybatis:
      mapper-locations: classpath:mapper/*.xml
      type-aliases-package: com.atguigu.springcloud.entities
    
  • 主启动

    @SpringBootApplication
    public class PaymentMain8001 {
        public static void main(String[] args) {
            SpringApplication.run(PaymentMain8001.class);
        }
    }
    
  • 业务类

    1.建库

    CREATE TABLE `payment`(
    	`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',
    	`serial` varchar(200) DEFAULT '',
    	PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8
    

    2.emtities

    • 主实体Payment

      @Data
      @AllArgsConstructor
      @NoArgsConstructor
      public class Payment  implements Serializable {
      
          private  Long id;
          private String serial;
      }
      
    • Json封装体CommonResult (用于给前端传送json数据)

      @Data
      @AllArgsConstructor
      @NoArgsConstructor
      public class CommonResult<T> {
          private Integer code;
          private String message;
          private  T      data;
      
          public CommonResult(Integer code,String message){
              this(code,message,null);
          }
      
      }
      

    3.dao

    • 接口PaymentDao

      @Mapper
      public interface PaymentDao {
      
          public  int  create(Payment payment);
      
          public  Payment  getPaymentById(@PathParam("id") Long id);
      }
      
    • mybatis的映射文件PaymentMapper.xml 对应放到resource下的mapper,与接口名对应

      • src\main\resources\mapper\PaymentMapper.xml
      <?xml version="1.0" encoding="UTF-8" ?>
      <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
              "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
      <mapper namespace="com.atguigu.springcloud.dao.PaymentDao">
          <insert id="create" parameterType="payment" useGeneratedKeys="true" keyProperty="id">
              insert  into payment(serial) values (#{serial});
          </insert>
      
          <resultMap id="BaseResultMap" type="com.atguigu.springcloud.entities.Payment">
              <id column="id" property="id" jdbcType="BIGINT"/>
              <id column="serial" property="serial" jdbcType="VARCHAR"/>
          </resultMap>
          <select id="getPaymentById" parameterType="Long" resultMap="BaseResultMap">
              select  * from payment where  id=#{id};
          </select>
      </mapper>
      

      mapper.xml的头部结构

      <?xml version="1.0" encoding="UTF-8" ?>
      <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
              "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
      <mapper namespace="com.atguigu.springcloud.dao.PaymentDao">
      </mapper>
      

    4.service

    • 接口PaymentService

      public interface PaymentService {
          public  int  create(Payment payment);
      
          public  Payment  getPaymentById(@PathParam("id") Long id);
      }
      
    • 实现类

      @Service
      public class PaymentServiceImpl implements  PaymentService {
      
          @Resource
          private PaymentDao paymentDao;
          @Override
          public int create(Payment payment) {
              return  paymentDao.create(payment);
      
          }
      
          @Override
          public Payment getPaymentById(Long id) {
              return paymentDao.getPaymentById(id);
          }
      }
      

​ 5.controller

@RestController
@Slf4j
public class PaymentController {

    @Resource
    private PaymentService paymentService;

    @PostMapping(value = "/payment/create")
    public  CommonResult create(Payment payment){
        int result = paymentService.create(payment);
        log.info("###########插入结果"+result);
        if(result>0){
            return new CommonResult(200,"插入数据库成功",result);
        }else{
            return new CommonResult(444,"插入数据库失败",null);
        }
    }

    @GetMapping(value = "/payment/get/{id}")
    public CommonResult getPaymentById(@PathVariable("id") Long id) {
        Payment paymentById = paymentService.getPaymentById(id);
        log.info("*********查找结果为: " + paymentById);
        if (paymentById != null) {
            return new CommonResult(200, "查找成功", paymentById);
        } else {
            return new CommonResult(444, "查找为空,查找ID为: " + id, null);
        }
    }
}
  • 测试

访问地址: http://localhost:8001/payment/get/31

结果

{"code":200,"message":"查找成功","data":{"id":31,"serial":"尚硅谷01"}}

postman模拟: http://localhost:8001/payment/create?serial=atguigu002

结果

{
    "code": 200,
    "message": "插入数据库成功",
    "data": 1
}

Dashboard窗口

在这里插入图片描述

<component name="RunDashboard">
    <option name="configurationTypes">
      <set>
        <option value="SpringBootApplicationConfigurationType" />
      </set>
    </option>
  </component> 

在这里插入图片描述
在这里插入图片描述
Dashboard窗口方法二
在这里插入图片描述

  • 小总结
  1. 建module
  2. 改POM
  3. 写YML
  4. 主启动
  5. 业务类
2.热部署
  • Adding devtools to your project

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <scope>runtime</scope>
        <optional>true</optional>
    </dependency>
    
  • Adding plugin to your pom.xml

    下面配置我们粘贴进聚合父类总工程的pom.xml里
    <build>
        <fileName>你自己的工程名字<fileName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <fork>true</fork>
                    <addResources>true</addResources>
                </configuration>
            </plugin>
        </plugins>
    </build>
    
  • Enabling automatic build

在这里插入图片描述

  • Update the value of
    在这里插入图片描述
  • 重启idea
3.cloud-consumer-order80 微服务消费者订单Module模块
  • 建cloud-consumer-order80

  • 改POM

        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-actuator</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-devtools</artifactId>
                <scope>runtime</scope>
                <optional>true</optional>
            </dependency>
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <optional>true</optional>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
        </dependencies>
    
  • 写YML

    server:
      port: 80
    
  • 主启动

    @SpringBootApplication
    public class OrderMain80 {
        public static void main(String[] args) {
            SpringApplication.run(OrderMain80.class,args);
        }
    }
    
  • 业务类

    • entites 和 Cloud-provider-payment8001 一样

    • 首说Resttemplate

在这里插入图片描述

  • config对其配置
```xml
@Configuration
public class ApplicationContextConfig {

    @Bean
    public RestTemplate getRestTemplate(){
        return  new RestTemplate();
    }
}
```
  • controller

    @RestController
    @Slf4j
    public class OrderController {
    
        public static  final  String  PAYMENT_URL="http://localhost:8001";
    
        @Resource
        private RestTemplate restTemplate;
    
        @GetMapping("/consumer/payment/create")
        public CommonResult<Payment> create(Payment payment){
            return  restTemplate.postForObject(PAYMENT_URL+"/payment/create",payment,CommonResult.class);
        }
    
    
        @GetMapping("/consumer/payment/{id}")
        public  CommonResult<Payment> getPayment(@PathVariable("id") Long id){
            return restTemplate.getForObject(PAYMENT_URL+"/payment/get/"+id,CommonResult.class);
        }
    }
    
  • 测试

    http://localhost/consumer/payment/32

    http://localhost/consumer/payment/create?serial=222

​ 注意

测试一下插入发现成功了,但是数据库没值,只有自增主键,这里插入没成功的原因是,8001的创建参数没加@RequestBody,

4. 工程重构
  • 系统中有重复部分,重构

在这里插入图片描述

  • 新建

    cloud-api-common

  • POM

      <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-devtools</artifactId>
                <scope>runtime</scope>
                <optional>true</optional>
            </dependency>
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <optional>true</optional>
            </dependency>
            <dependency>
                <groupId>cn.hutool</groupId>
                <artifactId>hutool-all</artifactId>
                <version>5.1.0</version>
            </dependency>
        </dependencies>
    
  • entties

    Payment实体、CommonResult通用封装类 进行打包

  • maven命令clean install

  • 订单80和支付8001分别改造

    1、删除各自的原先的entities文件夹

    2、分别在pom文件中进行配置

    <dependency>
        <groupId>com.atguigu.springcloud</groupId>
        <artifactId>cloud-api-common</artifactId>
        <version>${project.version}</version>
    </dependency>
    
ICC2 user guide(二)Placement and Optimization ICC2 place阶段user guide 阅读详情

相关推荐

微信内置浏览器抓包全攻略:从ADB配置到Chrome调试(附常见问题解决)

本文提供了一套完整的微信内置浏览器抓包与调试解决方案。从ADB工具的深度配置与稳定性连接开始,详细讲解了如何开启X5内核调试开关,并利用Chrome DevTools建立远程连接。文章重点剖析了Network面板进行网络请求抓取、性能分析和问题定位的实战技巧,并附带了设备连接失败、无网络请求等常见问题的排查指南,帮助开发者高效解决微信H5页面调试难题。

gitlab7runner的博客 541

Idea启动运行报错:Error:java: 无效的源发行版: 13

最近在做Springboot项目时,常常出现上述错误,小编也不知道怎么回事,到网上找了这个方面的解决办法,但是却发现根本解决不了,最终通过小编多次尝试,终于发现,为什么会报这个错误。(应该是Java版本和Springboot版本是有一定要求导致的)

坚持不懈的大白的博客 3928

告别130MB/s瓶颈!用Zynq+NVMe实现1.2GB/s高速存储的PL数据分流实战

本文详细介绍了如何通过Zynq+NVMe实现1.2GB/s高速存储的PL数据分流方案,突破传统Zynq架构130MB/s的瓶颈。文章分享了PL直连NVMe的硬件架构设计、软件栈优化及性能调优实战技巧,帮助开发者实现高速数据流的稳定存储。

weixin_42653691的博客 371

JAVA开发(保姆级微服务搭建过程)

现在的java后端基本都是通过微服务的方式进行搭建。当我们对需求进行分割时,可以通过横向或者纵向对服务进行划分。或者当某一块的业务我们希望通过一个单独的服务进行开发时,就需要新增新的服务,本文通过springtool suite工具介绍,微服务搭建过程。

JAVA领域优质创作者,基于分片网络查询方法专利发明者。 6971

html一号店项目代码,项目一号店素材(html模板)

【实例简介】【实例截图】【核心代码】oneShop├── css│ ├── ShopShow.css│ ├── base.css│ ├── load.css│ ├── logo.css│ ├── register.css│ └── style.css├── detail.html├── images│ ├── Thumbs.db│ ├── a_close.png│...

weixin_35390150的博客 4988

安捷伦示波器实战指南:从基础操作到精准触发

本文详细介绍了安捷伦示波器的基础操作与高级功能,包括精准触发配置、波形分析和常见问题排查。通过实战技巧和优化建议,帮助工程师快速掌握示波器的核心功能,提升调试效率。特别适合电子工程师和测试技术人员参考使用。

weixin_30839881的博客 135

Java 无法将类 xxx中的构造器 xxx应用到给定类型问题解决

Error:(12, 41) java: 无法将类 com.xudongbase.common.question.builder.QuestionBuilder中的构造器 QuestionBuilder应用到给定类型;需要: java.lang.String,java.lang.String找到: 没有参数原因: 实际参数列表和形式参数列表长度不同。

旭东怪的博客 7207

ABAP代码检查(Code Review)

1、SLIN 扩展程序检查 也可通过(SE38工具栏->检查-扩展程序检查) 进入 2、ATC 检查 通过<SE38菜单栏-检查-ABAP测试主控室> 或事物代码SCI, 支持自定义检查变式 SCI可以配置检查变式满足特殊需求,配置对象集用于批量检查 3、通过ABAP测试主控室实现统一管理,定期检查作业和监控功能(事务代码ATC) 参考 SLIN...

u012232542的博客 6063

java分布式架构的搭建_微服务中基于Spring Boot的maven分布式项目框架的搭建

项目介绍这里搭建的是基于 maven 的分布式工程,因为在一个项目中,多个微服务是属于同一个工程,只不过是提供不同的服务而已,再加上 IDEA 是默认一个窗口打开一个项目工程(这点和 eclipse 不同),如果项目大,不用 maven 聚合工程的话,那估计会打开十几个窗口……会崩溃……而且在架构上,也应该使用 maven 分布式工程来搭建微服务架构。这里手把手教大家在 IDEA 中搭建基于 ma...

weixin_36352023的博客 665

CentOS8静默安装Oracle11.2.0.1

背景 新安装oracle,用静默安装方式就不需要安装图形界面了,省时省力。 前期准备工作与图形化安装一样,如创建用户|用户组、环境变量、内核参数、创建目录等. 可参考图形化安装,链接:https://blog.youkuaiyun.com/heroicpoem/article/details/104229369 环境 平台 版本 操作系统 centOS 8 Oracle 11gR2 1.响应文件 响应文件的内容就是图形化安装时手工设置的选项内容。 解压后,database/response/db

heroicpoem的专栏 4518

在lio_sam中融入GPS

在LIO(激光惯性里程计)系统中,将GPS信息融合到里程计中,借助GTSAM(Georgia Tech Smoothing and Mapping)库进行因子图优化,可以有效提升全局定位精度。当进入到GPS信号不好或缺失的环境中,需要借助融合后的里程计反算经纬度,来获取高精度的定位信息。利用GeographicLib第三方库将经纬度投影到局部笛卡尔坐标系中。

如果想成为中心,那么就到中心去吧。 1210

微服务SpringCloud开弓之SpringCloud Bus消息总线「十一」

文章目录SpringCloud Bus消息总线1、针对问题:2、概述3、RabbitMQ环境配置4、SpringCloud Bus动态刷新全局广播5、Springcloud Bus动态刷新定点通知 SpringCloud Bus消息总线 1、针对问题: 每次微服务都要执行一次post请求,手动刷新 可否广播?一次通知,处处生效 我们想大范围的自动刷新 2、概述 1、分布式自动刷新配置功能 2、SpringCloud Bus配合Springcloud Config使用可以实现配置的动态刷新 是什么 s

python_start的博客 259

SAP ABAP 四种传统的数据库视图类型介绍之二:Projection View

一是该 projection view 只暴露了底层 TADIR 表的四个字段,因此通过该 view 维护数据,在维护界面我们只能维护一条记录的四个字段,如下图所示。使用 Projection view 的优点在于其设计灵活性:如果系统中原始的数据库表字段较多,通过投影仅保留关键信息可有效降低从数据库层到应用层之间的数据传输负担,且保持数据的一致性。其二是笔者之前的文章提到,TADIR 是 ABAP 系统重要的对象注册表,如同 window 操作系统的注册表一样,一般的应用开发人员不应该去修改其内容。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1439

微服务SpringCloud开弓之 Rest微服务工程搭建《二》

Rest微服务工程搭建 这里写目录标题Rest微服务工程搭建构建步骤1. Cloud-provider-payment8001 微服务提供者Module模块2.热部署3.cloud-consumer-order80 微服务消费者订单Module模块4. 工程重构 构建步骤 1. Cloud-provider-payment8001 微服务提供者Module模块 建module 改POM ...

python_start的博客 403

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

微服务SpringCloud开弓之SpringCloud Alibaba Sentinel实现熔断与限流「十四」

文章目录SpringCloud Alibaba Sentinel实现熔断与限流1、Sentinel2、安装Sentinel控制台3、初始化演示工程4、流控规则5、降级规则6、热点key限流1、基本介绍2、参数例外项7、系统规则8、@SentinelResource1、按资源名称限流+后续处理2、按照Url地址限流+后续处理3、客户自定义限流处理逻辑4、更多注解属性说明9、服务熔断功能Ribbon系列Feign系列熔断框架比较10、规则持久化 SpringCloud Alibaba Sentinel实现熔断与

python_start的博客 869

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

微服务SpringCloud开弓之Gateway新一代网关「九」

文章目录Gateway新一代网关1、概述简介2、三大核心概念3、Gateway工作流程4、入门配置5、通过服务名实现动态6、Predicate7、Filter的使用 Gateway新一代网关 1、概述简介 官网 上一代zuul 1.x 当前gateway 技术选型 1、Zuul1.x模型 2、我们为什么选择Gateway? 1.netflix不太靠谱,zuul2.0一直跳票,迟迟不发布 SpringCloud Gateway具有如下特性 基于Spring Framework 5,

python_start的博客 443

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

微服务SpringCloud开弓之SpringCloud Alibaba Seata处理分布式事务「十五」

文章目录SpringCloud Alibaba Seata处理分布式事务1、分布式事务问题2、Seata-Server安装3、订单/库存/账户业务数据库准备4、订单/库存/账户业务微服务准备5、Seata之原理简介再次回顾 SpringCloud Alibaba Seata处理分布式事务 1、分布式事务问题 分布式前 单机单库没这个问题 从1:1 -> 1:N -> N: N 分布式之后 一句话 一次业务操作需要跨多个数据源或需要跨多个系统进行远程调用,就会产生分布式事务问题

python_start的博客 498

微服务SpringCloud开弓之Eureka服务注册与发现《三》

目录1、Eureka基础知识2、单机Eureka构建步骤3、集群Eureka构建步骤4、支付服务提供者8001集群环境搭建5、actuator微服务信息完善6、eureka自我保护 1、Eureka基础知识 什么是服务治理 什么是服务注册 Eureka两组件 2、单机Eureka构建步骤 IDEA生成EurekaServer端服务注册中心 建Module cloud-e...

python_start的博客 414

微服务SpringCloud开弓之Hystrix熔断器「八」

文章目录1、概述2、HyStrix重要概念**3、hystrix案例****构建案例****80新建加入**故障和导致现象上述结论如何解决?解决的要求4、服务降级降级配置8001先从自身找问题8001fallback80fallback存在的问题解决办法5、服务熔断说明**实操**参数说明原理/小总结6、服务限流7、hystrix工作流程8、服务监控hystrixDashboard 官网资料 1、概述 分布式系统面临的问题 分布式系统面临的问题 复杂分布式体系结构中的应用程序 有数10个依赖关系,每

python_start的博客 239

微服务SpringCloud开弓之Zookeeper服务注册与发现《四》

目录SpringCloud整合Zookeeper替代Eureka1、注册中心Zookeeper2、服务提供者3、服务消费者 Eureka停止更新了 地址 SpringCloud整合Zookeeper替代Eureka 1、注册中心Zookeeper 关闭Linux服务器防火墙后启动Zookeeper服务器 //临时关闭 service iptables stop //禁止开机启动 chkconf...

python_start的博客 269

微服务SpringCloud开弓之SpringCloud Stream消息驱动「十二」

文章目录SpringCloud Stream消息驱动1、消息驱动概述2、案例说明3、消息驱动之生产者4、消息驱动之消费者5、分组消费与持久化 SpringCloud Stream消息驱动 1、消息驱动概述 是什么 官网地址 文档 一句话:屏蔽底层消息中间件的差异,降低切换成本,统一消息的编程模型 设计思想 1、标准MQ 生产者/消费者之间靠消息媒介传递信息内容:Message 消息必须走特定的通道:MessageChannel 消息通道里的消息如何被消费呢?谁负责收发。处理消息通道Message

python_start的博客 223

微服务SpringCloud开弓之OpenFeign服务接口调用「七」

文章目录1、概述2、OpenFeign使用步骤3、OpenFeign超时控制 1、概述 OpenFeign是什么 官网地址 Feign是一个声明式的Web服务客户端,让编写Web服务客户端变得非常容易,只需 创建一个接口并在接口上添加注解即可 GitHub Feign和OpenFeign两者区别 2、OpenFeign使用步骤 接口+注解 微服务调用接口+@FeignClient 新建cloud-consumer-feign-order80 Feign在消费端使用 POM

python_start的博客 369

微服务SpringCloud开弓之Consul服务注册与发现《五》

目录1、 Consul简介2、安装并运行Consul3、服务提供者4、服务消费者5、三个注册中心异同点 1、 Consul简介 是什么 https://www.consul.io/intro/index.html 能干嘛 服务发现 提供HTTP/DN 健康检测 支持多种方式,HTTP、TCP、Docker、shell脚本定制化 KV存储 Key、Value的存储方式 ...

python_start的博客 471

微服务SpringCloud开弓之Ribbon负载均衡调用《六》

目录1、概述2、Ribbon负载均衡演示3、Ribbon核心组件IRule4、Ribbon负载均衡算法 1、概述 是什么 官网资料 ​ 地址 Ribbon目前也进入维护模式 用途 LB(负载均衡) - 集中式LB - 进程内LB 2、Ribbon负载均衡演示 架构说明 总结: Ribbon其实就是一个软负载均衡的客户端组件, 他可以和其他所需请...

python_start的博客 304

微服务SpringCloud开弓之SpringCloud config分布式配置中心「十」

文章目录1、概述2、Config服务端配置与测试3、Config客户端配置与测试4、Config客户端手动动态刷新 1、概述 地址 分布式系统面临的问题–配置问题 是什么 ​ Springcloud config为微服务架构中的微服务提供集中化的外部配置支持,配置服务器为各个不同微服务应用的所有环境提供一个中心化的外部配置。 能干嘛 ​ 1、集中管理配置文件 ​ 2、不同环境不同配置,动态化的配置更新,分环境部署比如dev/test/prod/beta/release

python_start的博客 263

微服务SpringCloud开弓之SpringCloud Alibaba Nacos服务注册和配置中心「十三」

文章目录SpringCloud Alibaba Nacos服务注册和配置中心1、Nacos简介2、Nacos作为服务注册中心演示3、服务注册中心对比4、Nacos作为配置中心--基础配置5、Nacos作为配置中心--分类配置6、Nacos集群和持久化配置(重要)7、Linux版nacos+mysql生产环境配置 SpringCloud Alibaba Nacos服务注册和配置中心 1、Nacos简介 地址 官方文档 为什么叫Nacos 前四个字母分别为naming和Configuration的前两个字母

python_start的博客 366
上一篇: ElasticSearch最新搞定版
下一篇: 微服务SpringCloud开弓之 Rest微服务工程搭建《二》
漂吧
博客等级 码龄8年 15粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值