当前位置: 首页 > news >正文

音乐网站如何做制作网站的网址

音乐网站如何做,制作网站的网址,支付通道网站怎么做,网站开发自适应不同分辨率文章目录 🍃前言🎍解决方案🚩关于注册中⼼🚩CAP理论🚩常见的注册中心 🎄Eureka🚩搭建 Eureka Server🎈创建Eureka-server ⼦模块🎈引入依赖🎈项目构建插件&am…

文章目录

  • 🍃前言
  • 🎍解决方案
    • 🚩关于注册中⼼
    • 🚩CAP理论
    • 🚩常见的注册中心
  • 🎄Eureka
    • 🚩搭建 Eureka Server
      • 🎈创建Eureka-server ⼦模块
      • 🎈引入依赖
      • 🎈项目构建插件
      • 🎈书写启动类
      • 🎈编写配置文件
      • 🎈启动验证服务
  • 🌳服务注册
    • 🚩引⼊eureka-client依赖
    • 🚩完善配置文件
    • 🚩启动服务
  • 🎄服务发现
    • 🚩引入依赖
    • 🚩完善配置文件
    • 🚩远程调用
    • 🚩启动服务
  • ⭕总结

🍃前言

在我们前面进行搭建微服务,在进行远程调用时进行远程调用的时候,我们发现我们的远程调用URL是写死的。

String url = "http://127.0.0.1:9090/product/"+ orderInfo.getProductId();

当更换机器,或者新增机器时,这个URL就需要跟着变更,就需要去通知所有的相关服务去修改。随之⽽来的就是各个项⽬的配置⽂件反复更新,各个项⽬的频繁部署。这种没有具体意义,但⼜不得不做的⼯作,会让⼈⾮常痛苦

🎍解决方案

试想⽣活中的场景

我们⽣活中,避免不了和各个机构(医院,学校,政府部⻔等)打交道,就需要保存各个机构的电话号码。如果机构换了电话号码,就需要通知各个使⽤⽅,但是这些机构的使⽤⽅群体是巨⼤的,没办法做到⼀⼀通知,怎么处理呢?

机构电话如果发⽣变化,通知114。⽤⼾需要联系机构时,先打114查询电话,然后再联系各个机构

114查号台的作⽤主要有两个:

  1. 号码注册:服务⽅把电话上报给114
  2. 号码查询:使⽤⽅通过114可以查到对应的号码

在这里插入图片描述

同样的,微服务开发时,也可以采⽤类似的⽅案。

  • 服务启动/变更时,向注册中⼼报道。注册中⼼记录应⽤和IP的关系。

  • 调⽤⽅调⽤时,先去注册中⼼获取服务⽅的IP,再去服务⽅进⾏调⽤

🚩关于注册中⼼

在最初的架构体系中,集群的概念还不那么流⾏,且机器数量也⽐较少,此时直接使⽤DNS+Nginx就可以满⾜⼏乎所有服务的发现。相关的注册信息直接配置在Nginx。但是随着微服务的流⾏与流量的激增,

机器规模逐渐变⼤,并且机器会有频繁的上下线⾏为,这种时候需要运维⼿动地去维护这个配置信息是⼀个很⿇烦的操作。

所以开发者们开始希望有这么⼀个东西,它能维护⼀个服务列表,哪个机器上线了,哪个机器宕机了,这些信息都会⾃动更新到服务列表上,客⼾端拿到这个列表,直接进⾏服务调⽤即可。这个就是注册中⼼

注册中⼼主要有三种⻆⾊:

  • 服务提供者(Server):⼀次业务中, 被其它微服务调⽤的服务, 也就是提供接给其它微服务
  • 服务消费者(Client):⼀次业务中, 调⽤其它微服务的服务. 也就是调⽤其它微服务提供的接
  • 服务注册中⼼(Registry): ⽤于保存Server 的注册信息, 当Server 节点发⽣变更时,Registry会同步变更. 服务与注册中⼼使⽤⼀定机制通信, 如果注册中⼼与某服务⻓时间⽆法通信, 就会注销该实例.

他们之间的关系以及⼯作内容, 可以通过两个概念来描述:

  • 服务注册:服务提供者在启动时, 向 Registry 注册⾃⾝服务, 并向 Registry 定期发送⼼跳汇报存活状
    态.
  • 服务发现: 服务消费者从注册中⼼查询服务提供者的地址,并通过该地址调⽤服务提供者的接⼝. 服务
    发现的⼀个重要作⽤就是提供给服务消费者⼀个可⽤的服务列表

在这里插入图片描述

🚩CAP理论

谈到注册中⼼,就避不开CAP理论。

CAP 理论是分布式系统设计中最基础,也是最为关键的理论,理论大致如下:

在这里插入图片描述

  • ⼀致性(Consistency) CAP理论中的⼀致性, 指的是强⼀致性。所有节点在同⼀时间具有相同的数据
  • 可⽤性(Availability) 保证每个请求都有响应(响应结果可能不对)
  • 分区容错性(Partition Tolerance) 当出现⽹络分区后,系统仍然能够对外提供服务

CAP 理论告诉我们: ⼀个分布式系统不可能同时满⾜数据⼀致性, 服务可⽤性和分区容错性这三个基本
需求, 最多只能同时满⾜其中的两个.

在分布式系统中, 系统间的⽹络不能100%保证健康, 服务⼜必须对外保证服务. 因此Partition Tolerance是不可避免. 那就只能在C和A中选择⼀个. 也就是CP或者AP架构

两个架构的区别在于:

  • CP架构: 为了保证分布式系统对外的数据⼀致性, 于是选择不返回任何数据
  • AP架构: 为了保证分布式系统的可⽤性, 节点2返回V0版本的数据(即使这个数据不正确)

🚩常见的注册中心

  1. Zookeeper

Zookeeper的官⽅并没有说它是⼀个注册中⼼,但是国内Java体系,⼤部分的集群环境都是依赖 Zookeeper来完成注册中⼼的功能

  1. Eureka

Eureka是Netflix开发的基于REST的服务发现框架,主要⽤于服务注册,管理,负载均衡和服务故障 转移.
官⽅声明在Eureka2.0版本停⽌维护,不建议使⽤。但是Eureka是SpringCloud服务注册/发现的默认实现,所以⽬前还是有很多公司在使⽤

  1. Nacos

Nacos是Spring Cloud Alibaba架构中重要的组件, 除了服务注册, 服务发现功能之外, Nacos还⽀持配置管理,流量管理, DNS, 动态DNS等多种特性.

三者所选择的 CAP 理论也不一样

ZookeeperEurekaNacos
CAP理论CPAPCP或AP,默认AP

本次博主主要介绍 Eureka 的使用

🎄Eureka

Eureka是Netflix OSS套件中关于服务注册和发现的解决⽅案

Eureka主要分为两个部分:

  • Eureka Server: 作为注册中⼼Server端, 向微服务应⽤程序提供服务注册, 发现, 健康检查等能⼒
  • Eureka Client: 服务提供者, 服务启动时, 会向Eureka Server 注册⾃⼰的信息(IP,端⼝,服务信息等),Eureka Server 会存储这些信息

注意,以下的演示是基于【Spring Cloud】微服务的简单搭建 的基础进行搭建的。不了解的小伙伴可以先去看一下博主所写的微服务的简单搭建。

关于Eureka的使用, 主要包含以下三个部分:

  1. 搭建Eureka Server
  2. 将order-service, product-service 都注册到Eureka
  3. order-service远程调⽤时, 从Eureka中获取product-service的服务列表, 然后进⾏交互

🚩搭建 Eureka Server

Eureka-server 是⼀个独⽴的微服务

🎈创建Eureka-server ⼦模块

在这里插入图片描述
在这里插入图片描述

🎈引入依赖

在这里插入图片描述
依赖如下:

<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>

🎈项目构建插件

<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins>
</build>

🎈书写启动类

在这里插入图片描述
代码如下:

@EnableEurekaServer
@SpringBootApplication
public class EurekaApplication {public static void main(String[] args) {SpringApplication.run(EurekaApplication.class,args);}
}

🎈编写配置文件

在这里插入图片描述

配置如下:

server:port: 10010
spring:application:name: eureka-serve
eureka:instance:hostname: localhostclient:fetch-registry: false # 表⽰是否从Eureka Server获取注册信息,默认为true.因为这是⼀个单点的Eureka Server,不需要同步其他的Eureka Server节点的数据,这⾥设置为falseregister-with-eureka: false # 表⽰是否将⾃⼰注册到Eureka Server,默认为true.由于当前应⽤就是Eureka Server,故⽽设置为false.service-url:
# 设置与Eureka Server的地址,查询服务和注册服务都需要依赖这个地址.defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

🎈启动验证服务

启动服务, 访问注册中⼼: http://127.0.0.1:10010/

出现以下界面说明启动成功了
在这里插入图片描述

🌳服务注册

接下来我们把product-service 注册到eureka-server中

🚩引⼊eureka-client依赖

<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

🚩完善配置文件

添加服务名称和eureka地址

spring:application:name: product-service
eureka:client:service-url:defaultZone: http://127.0.0.1:10010/eureka

🚩启动服务

刷新我们的注册中心,就可以看到以下场景
在这里插入图片描述

可以看到product-service已经注册到 eureka上了

🎄服务发现

接下来我们修改order-service, 在远程调⽤时, 从eureka-server拉取product-service的服务信息, 实现
服务发现

🚩引入依赖

服务注册和服务发现都封装在eureka-client依赖中, 所以服务发现时, 也是引⼊eureka-client依赖

<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

🚩完善配置文件

服务发现也需要知道eureka地址,因此配置内容依然与服务注册⼀致,都是配置eureka信息

spring:application:name: order-service
eureka:client:service-url:defaultZone: http://127.0.0.1:10010/eureka

🚩远程调用

远程调⽤时,我们需要从eureka-server中获取product-service的列表(可能存在多个服务),并选择其中
⼀个进⾏调⽤

@Slf4j
@Service
public class OrderService {@Autowiredprivate OrderMapper orderMapper;@Autowiredprivate RestTemplate restTemplate;@Resourceprivate DiscoveryClient discoveryClient;public OrderInfo selectAll(Integer userid) {OrderInfo orderInfo = orderMapper.selectAll(userid);//String url = "http://127.0.0.1:9999/product/" + orderInfo.getProductId();List<ServiceInstance> instances = discoveryClient.getInstances("product-service");//服务可能有多个, 获取第⼀个System.out.println("instances" + instances.size());EurekaServiceInstance instance = (EurekaServiceInstance)instances.get(0);log.info(instance.getInstanceId());//拼接urlString url = instance.getUri()+"/product/"+ orderInfo.getProductId();ProductInfo productInfo = restTemplate.getForObject(url, ProductInfo.class);orderInfo.setProductInfo(productInfo);return orderInfo;}
}

🚩启动服务

刷新注册中心。我们可以看到order-service已经注册到eureka上了
在这里插入图片描述
访问order-service的相应接口,我们也可以看到调用成功。
在这里插入图片描述

⭕总结

关于《【Spring Cloud】 使用Eureka实现服务注册与服务发现》就讲解到这儿,感谢大家的支持,欢迎各位留言交流以及批评指正,如果文章对您有帮助或者觉得作者写的还不错可以点一下关注,点赞,收藏支持一下!

http://www.hkea.cn/news/919135/

相关文章:

  • 沈阳酒店企业网站制作公司2023年9月疫情又开始了吗
  • 厦门专业网站建设如何快速推广一个新产品
  • 帮人做传销网站违法吗seo网站排名助手
  • 如何做优品快报下的子网站营销型网站建设目标
  • 用织梦做网站调用乱码营业推广是什么意思
  • 做走私网站北京口碑最好的it培训机构
  • 网站建设OA系统开发it培训机构哪家好
  • 网站运维可以做哪些域名查询网站入口
  • 网站开发的基本语言外贸平台自建站
  • 女生自己做网站营销方法有哪些
  • 怎么自己做网站吓别人金融网站推广圳seo公司
  • 彩票网站的客服有做吗海淀seo搜索优化多少钱
  • 河源哪有做网站网页模板设计
  • 手机网站可以做英文版本吗近三天时政热点
  • 怎么做网站游戏网络优化排名培训
  • ic外贸网站建设黑帽seo技巧
  • 实业有限公司网站怎么做百度一下了你就知道官网
  • 企业电子商务网站推广平台有哪些渠道
  • 本地用织梦做网站百度的网站网址
  • 基础展示营销型型网站新闻发稿平台有哪些
  • 做游戏赚钱的网站最新新闻热点事件2022
  • 商务网站建设哪家好推广代理公司
  • 自己做网站是否要买云主机西安百度提升优化
  • 成都注册公司哪个区好分析网站推广和优化的原因
  • 模板建站杭州seo泽成
  • 济南网站建设公司川芎网络怎么注册自己的网址
  • linux下安装wordpress关键词优化排名查询
  • wordpress手机网站怎么做中央电视台一套广告价目表
  • 百家号如何给网站做推广推广方案是什么
  • 西安三网合一网站建设产品线上推广方案