分布式系统基本环境搭建

目录

简介

SpringCloud 的几大痛点

SpringCloud Alibaba 的优势:

版本选择

项目中的依赖

Nacos [作为注册中心]

下载 nacos-server

启动 nacos-server

将微服务注册到 nacos 中

在common模块中加入依赖

配置Nacos Server 地址

 @EnableDiscoveryClient 开启服务注册

Feign 声明式远程调用

 简介

使用

引入依赖

开启 feign 功能

声明远程接口

Nacos[ 作为配置中心]

引入依赖

创建bootstrap.properties

在 nacos 中添加配置

动态获取和刷新配置

命名空间

配置集

Gateway

 特点

创建网关模块

引入依赖

 加注解

配置nacos

配置bootstrap

新建命名空间

编写网关配置文件

问题:

版本问题:有可能使用

openfeign问题: 

排除数据库检索



微服务-注册中心、配置中心、网关


简介

SpringCloud 的几大痛点


SpringCloud 部分组件停止维护和更新,给开发带来不便;
SpringCloud 部分环境搭建复杂,没有完善的可视化界面,我们需要大量的二次开发和定制
SpringCloud 配置复杂,难以上手,部分配置差别难以区分和合理应用


SpringCloud Alibaba 的优势:


阿里使用过的组件经历了考验,性能强悍,设计合理,现在开源出来大家用
成套的产品搭配完善的可视化界面给开发运维带来极大的便利
搭建简单,学习曲线低。


结合 SpringCloud Alibaba 我们最终的技术搭配方案:
SpringCloud Alibaba - Nacos :注册中心(服务发现/ 注册)
SpringCloud Alibaba - Nacos :配置中心(动态配置管理)

SpringCloud - Ribbon :负载均衡
SpringCloud - Feign :声明式 HTTP 客户端(调用远程服务)

SpringCloud Alibaba - Sentinel :服务容错(限流、降级、熔断)
SpringCloud - Gateway :API 网关(webflux 编程模式)
SpringCloud - Sleuth :调用链监控

SpringCloud Alibaba - Seata原 :原 Fescar ,即分布式事务解决方案

版本选择

由于 Spring Boot 1 和 Spring Boot 2 在 Actuator 模块的接口和注解有很大的变更,且
spring-cloud-commons 从 1.x.x 版本升级到 2.0.0 版本也有较大的变更,因此我们采取跟
SpringBoot 版本号一致的版本:
 1.5.x 版本适用于 Spring Boot 1.5.x
 2.0.x 版本适用于 Spring Boot 2.0.x
 2.1.x 版本适用于 Spring Boot 2.1.x

项目中的依赖

在 common 项目中引入如下。进行统一管理
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.1.0.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>

Nacos [作为注册中心]

下载 nacos-server

后期装在linux上

https://github.com/alibaba/nacos/releases

启动 nacos-server

 双击 bin 中的 startup.cmd 文件
 访问 http://localhost:8848/nacos/
 使用默认的 nacos/nacos 进行登录

将微服务注册到 nacos 中

在common模块中加入依赖

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

配置Nacos Server 地址

  application.yml中配置Nacos Server 地址

spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848

 @EnableDiscoveryClient 开启服务注册

使用@EnableDiscoveryClient 开启服务注册发现功能

Feign 声明式远程调用

 简介

Feign 是一个声明式的 HTTP 客户端,它的目的就是让远程调用更加简单。Feign 提供了 HTTP
请求的模板, 通过编写简单的接口和插入注解,就可以定义好 HTTP 请求的参数、格式、地
址等信息。
Feign 整合了 Ribbon (负载均衡)和 Hystrix( 服务熔断),可以让我们不再需要显式地使用这
两个组件。
SpringCloudFeign 在 NetflixFeign 的基础上扩展了对 SpringMVC 注解的支持,在其实现下,我
们只需创建一个接口并用注解的方式来配置它,即可完成对服务提供方的接口绑定。简化了
SpringCloudRibbon 自行封装服务调用客户端的开发量。

使用

引入依赖

<dependency>
     <groupId>org.springframework.cloud</groupId>
     <artifactId>spring-cloud-starter-openfeign</artifactId>
 </dependency>

开启 feign 功能

@EnableFeignClients(basePackages = "你的feign接口")

声明远程接口

@FeignClient("mall-coupon")  //模块名字     

  mall-member 远程调用 all-coupon 模块接口

 

Nacos[ 作为配置中心]

 态配置管理

引入依赖

在common中引入依赖

<dependency>
	<groupId>com.alibaba.cloud</groupId>
	<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

创建bootstrap.properties

会优先于application加载

spring.application.name=mall-coupon
spring.cloud.nacos.config.server-addr=127.0.0.1:8848

在 nacos 中添加配置

 名字和bootstrap.properties下的配置名字一样

动态获取和刷新配置

 使用@Value 和@RefreshScope

成上述两步后,应用会从 Nacos Config 中获取相应的配置,并添加在 Spring Environment
的 PropertySources 中 。 这 里 我 们 使 用 @Value 注 解 来 将 对 应 的 配 置 注 入 到
SampleController 的 userName 和 age 字段,并添加 @RefreshScope 打开动态刷新功能

命名空间

nacos创建命名空间

 建立开发,测试,生产 三个环境的命名空间

配置列表获取命名空间id

 在bootstrap配置文件假如明明空间id

这样就可以使用nacos下test环境的配置

 每一个微服务都创建自己的微服务命名空间。只加载自己的配置

配置集

配置集 ID: 

配置分组:同一个命名空间,不容组

使用配置分组区分环境

同时加载多个配置集

1微服务所有配置都可以放在配置中心中

2.在bootstrap配置中配置来源地址即可

Gateway

网关作为流量的入口,常用功能包括路由转发、权限校验、限流控制等。

 特点

 基于 Spring5,支持响应式编程和 SpringBoot2.0
 支持使用任何请求属性进行路由匹配
 特定于路由的断言和过滤器
 集成 Hystrix 进行断路保护
 集成服务发现功能
 易于编写 Predicates 和 Filters
 支持请求速率限制
 支持路径重写

创建网关模块

引入依赖

<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>

 加注解

启动类上加注解,

@EnableDiscoveryClient

配置nacos

spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
spring.application.name=mall-gateway

配置bootstrap

spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.cloud.nacos.config.namespace=e94abfb8-7d8b-4c95-8c52-061fd10b7757

新建命名空间

编写网关配置文件

类似路由规则:

根据localhost:88/?url=baidu地址访问百度网站

spring:
  cloud:
    gateway:
      routes:
        - id: add_request_parameter-route
          uri: https://www.baidu.com
          predicates:
            - Query=url,baidu

问题:

版本问题:有可能使用

非正式版本的依赖  有可能对springcloud有冲突:

试着改成:2.2.1

现在是非正式版本,后面也要改成正式版本,不包含对任何SNAPSHOT版本的依赖,保证正式版本的稳定性

openfeign问题: 

No Feign Client for loadBalancing defined.Did you forget to include spring-cloud-starter-loadbalance

原因:由于SpringCloud Feign在Hoxton.M2 RELEASED版本之后不再使用Ribbon而是使用spring-cloud-loadbalancer,所以不引入spring-cloud-loadbalancer会报错

解决方法:

#添加loadbalancer
<dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-starter-loadbalancer</artifactId>
   <version>2.2.0.RELEASE</version>
</dependency>


#排除ribbon
<dependency>
	<groupId>com.alibaba.cloud</groupId>
	<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
	<exclusions>
		<exclusion>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
		</exclusion>
	</exclusions>
</dependency>

nacos配置中心检索不到bootstrap配置

假如以下依赖

            <!--加载不了bootstrap文件-->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-bootstrap</artifactId>
                <version>3.0.1</version>
            </dependency>

排除数据库检索

问题:
Consider the following:
    If you want an embedded database (H2, HSQL or Derby), please put it on the classpath.
    If you have database settings to be loaded from a particular profile you may need to activate it (no profiles are currently active).

@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要搭建分布式并行计算环境,您可以按照以下步骤进行操作: 1. 确定需求:首先,明确您的计算任务和要求。了解您需要处理的数据量、计算复杂度、并行计算的规模等因素。 2. 选择框架:根据需求选择合适的分布式计算框架,例如Hadoop、Spark、MPI等。这些框架提供了分布式计算的基本功能和工具。 3. 构建集群:为了实现分布式计算,您需要构建一个包含多个计算节点的集群。可以选择云服务提供商(如AWS、Azure)来创建虚拟机实例,或者使用本地服务器。 4. 安装和配置框架:根据所选框架的要求,安装和配置相应的软件和组件。这包括设置主节点和工作节点、配置网络通信和文件系统等。 5. 分配任务和数据:将您的计算任务划分为可并行执行的子任务,并将数据划分为适当的分块。确保任务和数据能够在集群中进行分发和处理。 6. 编写代码:根据选择的框架,编写相应的程序代码。使用适当的API和函数来实现并行计算和数据传输。 7. 测试和调试:在集群上运行计算任务,检查程序是否按预期工作。如果有错误或性能问题,进行调试和优化。 8. 执行并监视:启动并行计算任务,监视其进展和性能。根据需要,定期检查日志和结果输出。 以上步骤只是一个概览,实际搭建过程可能因框架选择和需求差异而有所变化。确保仔细阅读框架的文档,并参考相关文献和教程来获取更详细的指导。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值