论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
ToB企服应用市场:ToB评测及商务社交产业平台
»
论坛
›
软件与程序人生
›
后端开发
›
Java
›
SpringCloudAlibaba学习(解决SpringBoot初始化以及Ngin ...
SpringCloudAlibaba学习(解决SpringBoot初始化以及Nginx启动出错问题) ...
羊蹓狼
金牌会员
|
2022-6-24 11:13:24
|
显示全部楼层
|
阅读模式
楼主
主题
886
|
帖子
886
|
积分
2658
微服务强调每个服务都是单独的数据库
在不使用微服务的情况下可以采用分布式架构,通过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是2.2.7.RELEASE
pom
import
org.springframework.cloud
spring-cloud-dependencies
${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>
<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相同,只是注解不同。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
羊蹓狼
金牌会员
这个人很懒什么都没写!
楼主热帖
让你成为网络世界中有破坏力的人-HTTP ...
一文带你走进【内存泄漏】
dolphinscheduler单机化改造
day01-Tomcat框架分析
保举开源项目:LuCI App AdGuardHome - ...
一文搞懂static
深入理解并发编程同步工具类 ...
邮件管理数据库设计--MySQL
3. 视图-触发器-存储过程-索引 ...
基于 Sealos 的镜像构建能力,快速部署 ...
标签云
存储
挺好的
服务器
快速回复
返回顶部
返回列表