SpringCloudAlibaba学习(解决SpringBoot初始化以及Nginx启动出错问题)()

  本篇文章为你整理了SpringCloudAlibaba学习(解决SpringBoot初始化以及Nginx启动出错问题)()的详细内容,包含有 SpringCloudAlibaba学习(解决SpringBoot初始化以及Nginx启动出错问题),希望能帮助你了解 SpringCloudAlibaba学习(解决SpringBoot初始化以及Nginx启动出错问题)。

  微服务强调每个服务都是单独的数据库
 

  在不使用微服务的情况下可以采用分布式架构,通过Template来调用远程的Rest接口
 

  但这种方式维护起来很麻烦,而且有很多弊端。
 

  一、环境搭建
 

  1、首先搭建SpringBoot框架
 

  使用Spring Initializr快速搭建SpringBoot框架时可能会遇到访问超时的问题。此问题有两种解决的办法:
 

  ①将服务源改成https://start.aliyun.com,这种方法是采用alibaba的springboot架构模型,会和常规的模型有出入。(这种方法有的时候搭建出来没有pom文件,不能被识别为maven项目,这种情况采用第二种方法即可)
 

  ②将服务源改成http://start.springboot.io,这种方式是采用传统的springboot架构模型,只是这个是国内源。

  SpringCloud的学习结合:https://spring.io/projects/spring-cloud-alibaba 和 https://github.com/alibaba/spring-cloud-alibaba/wiki进行学习
 

  依赖版本说明:
 

  
 

  
 

  因为我使用的Nacos版本是2.0.0的,所以SpringCloud版本选用2.2.7.RELEASE,相应的SpringBoot的版本采用2.3.12.RELEASE
 

  1、首先添加SpringCloudAlibaba依赖
 

  //将依赖放在dependencyManagement中继承该父项目的子类必须显示的声明才能使用。
 

  //一般都会采用这种方式来继承一个版本管理器,因为中只能继承一个,一般来说公司都会有一个父Springboot项目,我们可以在中继承该项目。
 

  com.alibaba.cloud
 

  spring-cloud-alibaba-dependencies
\({project-version} /version //version是2.2.7.RELEASE type pom /type scope import /scope /dependency !--SpringCloud的版本管理-- dependency groupId org.springframework.cloud /groupId artifactId spring-cloud-dependencies /artifactId version \){springCloud-version}
pom
import
至此,SpringCloudAlibaba的环境就已经搭建好了。
二、注册中心Nacos
1、单机模式
①搭建分布式架构,通过分布式架构来搭建微服务架构
通过RestTempate来实现调用远程的rest接口
首先添加RestTemplate的配置类
@Bean
public RestTemplate restTemplate(RestTemplateBuilder builder){
RestTemplate restTemplate = builder.build();
return restTemplate;
}
然后调用restTemplate的方法:getforObject(),通过传入微服务的服务名和返回值类型来实现远程接口的调用。
②启动 进入到nacos的bin目录,在cmd中运行 startup -m standalone
③复制输出的网址到浏览器进行访问 默认账号和密码都是nacos
④在每个微服务(子SpringBoot项目)中加入nacos依赖
com.alibaba.cloud
spring-cloud-starter-alibaba-nacos-discovery
④在配置文件中配置nacox

  应用名称,nacos会把它当做是服务名称spring:
application:
name: order-service
cloud:
nacos:
server-addr: ip:8848
discovery:
username: nacos
password: nacos
#命名空间,用于拆分服务(可以将服务拆分为生产环境和测试环境)
namespace: public
⑤这时候服务注册与发现就会自动将我们的服务注册到nacos注册中心
⑥此时直接在浏览器访问的话会报404错误,是因为nacos的执行原理是依赖负载均衡器来调用微服务的。此时只需要在RestTemplate的配置类上加入注解@LoadBalanced即可为服务端配置负载均衡。(该负载均衡采用的是轮询机制)即:
@Bean
@LoadBalanced
public RestTemplate restTemplate(RestTemplateBuilder builder){
RestTemplate restTemplate = builder.build();
return restTemplate;
}

  nacos执行原理:
创建永久实例:通过:spring.cloud.nacos.discovery.ephemeral: false 哪怕宕机了也不会删除实例
2、集群模式部署nacos
①修改application.properties文件,修改端口号,数据源使用mysql,修改mysql数据库的连接参数
②修改cluster.conf.example文件(现将其拷贝一份,然后将名字修改为cluster.conf)
③修改startup文件,将占用内存修改小一点。
④安装Nginx并启动,第一次启动可能会一闪而过,这时查看日志,如果有错误则修改监听端口,如果没错误则说明启动成功(windows启动Nginx本身就是一闪而过)
在启动之前还应该加入(Nginx是最常见的软件负载均衡)
upstream nacoscluster{
server ip:8849;
server ip:8851;
server ip:8860;
}
及修改
location /nacos/{
proxy_pass http://nacoscluster/nacos/;
 

  }
 

  ⑤将application.yml中的服务器地址改为Nginx的地址启动即可

  三、微服务负载均衡器Ribbon
 

  内置很多负载均衡的策略,我们可以通过覆盖掉这些配置,有两种方式:
 

  1、通过配置类的方式进行修改
 

  ①新建一个Ribbon的配置类,注意该配置类不能放在扫描包能扫到的位置,要不然会冲突
 

  @Configuration
 

  public class RibbenRandomRuleConfig {
 

  /方法名一定要叫这个/
 

  @Bean
 

  public IRule iRule(){//IRule是所有负载均衡策略的父接口
 

  return new RandomRule();
 

  }
 

  }

  在启动类上加上注解:
 

  @RibbonClients(value = {
 

  @RibbonClient(name = "stock-service",configuration = RibbenRandomRuleConfig.class)
 

  2、通过配置文件的方式进行修改

  stock-service:
 

  ribbon:
 

  NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule

  Spring Cloud LoadBalancer:是Spring Cloud官方自己提供的客户端负载均衡器,用于替代Ribbon
 

  使用:
 

  ①首先设置Ribbon为禁用,或者在依赖中排除Ribbon(建议使用依赖排除)

  

 dependency 

 

   groupId com.alibaba.cloud /groupId

   artifactId spring-cloud-starter-alibaba-nacos-discovery /artifactId

   !--将Ribbon排除掉--

   exclusions

   exclusion

   groupId org.springframework.cloud /groupId

   artifactId spring-cloud-starter-netfix-ribbon /artifactId

   /exclusion

   /exclusions

   /dependency

  

 

  在配置中加入:
 

  spring:
 

  cloud:
 

  loadbalancer:
 

  ribbon:
 

  enable: false
 

  ②定义配置类,配置Bean,定义自己的负载均衡策略
 

  ③在启动类上加注解@LoadBalancerClients(),使用方法和Ribbon相同,只是注解不同。

  以上就是SpringCloudAlibaba学习(解决SpringBoot初始化以及Nginx启动出错问题)()的详细内容,想要了解更多 SpringCloudAlibaba学习(解决SpringBoot初始化以及Nginx启动出错问题)的内容,请持续关注盛行IT软件开发工作室。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: