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

购物平台网站建设nba最新交易信息

购物平台网站建设,nba最新交易信息,网站美工做的是什么,广网站建设前言 上一篇博客 我们创建好了微服务项目,本篇博客来体验一下Nacos作为注册中心和配置中心的功能。 注册中心 如果我们启动了一个Nacos注册中心,那么微服务比如订单服务,启动后就可以连上注册中心把自己注册上去,这过程就是服务注册。每个微服务,比如商品服务都应该注册…

前言

上一篇博客 我们创建好了微服务项目,本篇博客来体验一下Nacos作为注册中心和配置中心的功能。

注册中心

如果我们启动了一个Nacos注册中心,那么微服务比如订单服务,启动后就可以连上注册中心把自己注册上去,这过程就是服务注册。每个微服务,比如商品服务都应该注册上去,这些微服务是集群化启动的,在多台机器都有,也都应该注册到注册中心。这样注册中心就会保存一个微服务和它所在的机器清单列表,某一天订单服务想要调用商品服务,就先要问一下注册中心这些商品服务在哪些机器上,注册中心会给它返回服务器列表,这样订单服务就可以随便挑一台机器,发起远程调用,这个过程就是服务发现

注册中心的两个核心功能就是服务注册服务发现

在这里插入图片描述

Nacos安装

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service的首字母简称,一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。

  1. 官网
    https://nacos.io/docs/next/quickstart/quick-start/

  2. 下载安装

  • 下载版本:
    在这里插入图片描述
    直接下载解压即可:

  • 启动命令

切换到bin目录,cmd中输入启动命令即可
在这里插入图片描述

startup.cmd -m standalone

在这里插入图片描述

启动成功后我们可以访问nacos:

http://localhost:8848/nacos
在这里插入图片描述
重要的两个功能,一个是配置管理,就是作为配置中心,另外一个是服务管理,就是作为注册中心。

注册中心-服务注册

服务注册流程如下:
在这里插入图片描述

我们来到创建好的项目中进行服务注册测试,先以订单服务为例,先启动这个微服务,由于每个微服务都是springboot的web应用,而我们最大的项目cloud-demo已经继承了springboot,所以每个微服务也是springboot应用,我们只需要在微服务pom文件中导入web依赖,来开发web项目即可。

在这里插入图片描述

在这里插入图片描述

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
</dependency>

由于要把自己注册到注册中心,所以还要导入alibaba-nacos-discovery依赖,但是我们在services中已经做了公共导入,它下面的每个模块默认都有这个依赖了:

<!-- 服务发现 -->
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

来到service-order模块来启动微服务,需要先编写一个主程序(OrderMainApplication):

在这里插入图片描述

springboot主程序需要的第一个注解叫@SpringBootApplication,代表它是一个springboot应用:

package com.example.order;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class OrderMainApplication {public static void main(String[] args) {SpringApplication.run(OrderMainApplication.class, args);}
}

启动之前先编写一下配置文件:
在这里插入图片描述

这个写好后,就可以启动微服务进行测试,看看能不能把自己注册到注册中心:

在这里插入图片描述
来到nacos注册中心:
在这里插入图片描述

可以看到service-order实例数为1,健康实例数为1,说明注册到nacos了。

同样把service-product也注册上来。端口用9000:
在这里插入图片描述
只要每个服务配置了nacos地址,只要启动了,就会自动连上nacos注册自己。而且我们从启动日志也能看到
在这里插入图片描述

来到nacos服务列表中查询:
在这里插入图片描述

那再注册中心注册的微服务都是什么东西呢?可以点进详情查看,其实就是微服务的名字以及其所在服务的ip和端口:
在这里插入图片描述
我们现在看到的实例数都是1,是因为我们是单机模式,代表之启动了一个微服务,如果启动多个效果是什么呢?我们可以在本机通过启动不同端口的方式模拟一个集群。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
同理为了查看效果,我们把商品模块复制两份进行启动,端口分别为9001和9002,然后把所有微服务全部启动
在这里插入图片描述

这样我们就在本机通过不同端口模拟启动一个集群,当我们所有服务都启动完成后:
在这里插入图片描述
我们去nacos服务列表查询:
在这里插入图片描述
这样服务注册的功能,我们就测试通过了,其实非常简单,只要引入了nacos-discovery依赖,配置了nacos地址,项目启动自己就会注册到注册中心,而注册中心保存的就是所有服务的可以访问的ip和对应的端口列表。

注意:测试期间cmd窗口不能关闭,否则相当于nacos服务就没有运行。

注册中心-服务发现

想要通过代码获取到注册中心中注册的所有微服务以及所在机器的ip地址和端口列表,可以通过下面流程进行:
在这里插入图片描述

以商品服务为例,先标注开启服务发现功能注解

package com.example.product;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;@EnableDiscoveryClient // 开启服务发现功能
@SpringBootApplication
public class ProductMainApplication {public static void main(String[] args) {SpringApplication.run(ProductMainApplication.class, args);}
}

编写一个测试类来测试一下服务发现的api如何使用,测试类的包名要和主程序的包名一样:

在这里插入图片描述

要写单元测试,首先得在项目中导入测试依赖:

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope>
</dependency>

测试类代码:

package com.example.product;import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.client.discovery.DiscoveryClient;import java.util.List;@SpringBootTest
public class DiscoveryTest {@AutowiredDiscoveryClient discoveryClient;@Testvoid discoveryClientTest() {for (String service : discoveryClient.getServices()) {System.out.println(service);// 获取ip+portList<ServiceInstance> instances = discoveryClient.getInstances(service);for (ServiceInstance instance : instances) {System.out.println(instance.getHost() + ":" + instance.getPort());}}}
}

运行测试代码:
在这里插入图片描述

除了使用DiscoveryClient,nacos组件也提供了叫做NacosServiceDiscovery,用哪个都可以,唯一的区别就是DiscoveryClient是Spring家族的规范,无论你用哪个注册中心,都可以用它的api,而NacosServiceDiscovery是引入nacos时用的api

package com.example.product;import com.alibaba.cloud.nacos.discovery.NacosServiceDiscovery;
import com.alibaba.nacos.api.exception.NacosException;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.cloud.client.ServiceInstance;import java.util.List;@SpringBootTest
public class DiscoveryTest {@AutowiredNacosServiceDiscovery nacosServiceDiscovery;@Testvoid nacosServiceDiscoveryTest() throws NacosException {for (String service : nacosServiceDiscovery.getServices()) {System.out.println(service);// 获取ip+portList<ServiceInstance> instances = nacosServiceDiscovery.getInstances(service);for (ServiceInstance instance : instances) {System.out.println(instance.getHost() + ":" + instance.getPort());}}}
}

在这里插入图片描述

这两个api仅作为了解,我们要进行远程调用,第一步就是要服务发现,但是服务发现后来要封装成自动化的过程,无需我们调用底层代码。我们要做的仅仅就是在每个微服务中引入@EnableDiscoveryClient注解,因为微服务之间可能要互相调用,因此在每个微服务中服务发现功能是必备的。

注册中心-编写微服务api

上面我们测试了服务发现功能,基于它可以实现微服务之间的调用,基本流程就是:
在这里插入图片描述
我们模拟一个场景来实现上面的流程:
在这里插入图片描述
我们来编码实现上面的业务流程,我们先来编写商品服务,由于远程调用都是发起http请求,所以我们在商品服务里面编写一个controller。这controller可以按照商品id查询商品:
在这里插入图片描述

这里由于要写javabean类,需要用到Lombok,每个模块都要用,所以这里在services模块的pom中添加lombok依赖:
在这里插入图片描述

我们这里就快速简单生成controller、service、bean
在这里插入图片描述

代码如下:
Product类:

package com.example.product.bean;import lombok.Data;import java.math.BigDecimal;@Data
public class Product {private Long id;private BigDecimal price;private String productName;private int num;
}

ProductController类:

package com.example.product.controller;import com.example.product.bean.Product;
import com.example.product.service.ProductService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class ProductController {@AutowiredProductService productService;// 查询商品@RequestMapping("/product/{id}")public Product getProduct(@PathVariable("id") Long productId) {

文章转载自:
http://dinncoomophagy.bpmz.cn
http://dinncocastries.bpmz.cn
http://dinncoaffectlessly.bpmz.cn
http://dinncoazo.bpmz.cn
http://dinncorotor.bpmz.cn
http://dinncovolitation.bpmz.cn
http://dinncoparacharmonium.bpmz.cn
http://dinncoclypeiform.bpmz.cn
http://dinncoreposit.bpmz.cn
http://dinncosepalous.bpmz.cn
http://dinncocleithral.bpmz.cn
http://dinncovagina.bpmz.cn
http://dinncozinkenite.bpmz.cn
http://dinncovaporimeter.bpmz.cn
http://dinncosledgehammer.bpmz.cn
http://dinncoavailably.bpmz.cn
http://dinncocaniniform.bpmz.cn
http://dinncocoastline.bpmz.cn
http://dinncoaristocracy.bpmz.cn
http://dinncomoider.bpmz.cn
http://dinncoserotonergic.bpmz.cn
http://dinncoblusterous.bpmz.cn
http://dinncomens.bpmz.cn
http://dinncohypertherm.bpmz.cn
http://dinncohippiedom.bpmz.cn
http://dinncofratching.bpmz.cn
http://dinncoverjuiced.bpmz.cn
http://dinncoadventist.bpmz.cn
http://dinncoepidemic.bpmz.cn
http://dinncoclinical.bpmz.cn
http://dinncoaep.bpmz.cn
http://dinncotommyrot.bpmz.cn
http://dinncocremator.bpmz.cn
http://dinncovinegrowing.bpmz.cn
http://dinncoarthrodia.bpmz.cn
http://dinncoserrate.bpmz.cn
http://dinncodeposition.bpmz.cn
http://dinncodetailed.bpmz.cn
http://dinncobeekeeper.bpmz.cn
http://dinncobuckled.bpmz.cn
http://dinncoeurobond.bpmz.cn
http://dinncovirginian.bpmz.cn
http://dinncofreebooty.bpmz.cn
http://dinncoafflict.bpmz.cn
http://dinncoenigmatic.bpmz.cn
http://dinncoyea.bpmz.cn
http://dinncooutbrave.bpmz.cn
http://dinncorecomfort.bpmz.cn
http://dinncomisbound.bpmz.cn
http://dinncotorula.bpmz.cn
http://dinncoleeriness.bpmz.cn
http://dinncoriazan.bpmz.cn
http://dinncostandardbearer.bpmz.cn
http://dinncogasiform.bpmz.cn
http://dinncoculturable.bpmz.cn
http://dinncofossilify.bpmz.cn
http://dinncogangleader.bpmz.cn
http://dinncowon.bpmz.cn
http://dinncoreexamine.bpmz.cn
http://dinncorangette.bpmz.cn
http://dinncowbs.bpmz.cn
http://dinncoapteryx.bpmz.cn
http://dinncothickset.bpmz.cn
http://dinncofibrovascular.bpmz.cn
http://dinncofamous.bpmz.cn
http://dinncocellulate.bpmz.cn
http://dinncounswore.bpmz.cn
http://dinncoalembic.bpmz.cn
http://dinncohandcart.bpmz.cn
http://dinncofoldboat.bpmz.cn
http://dinncobushfighting.bpmz.cn
http://dinncojeux.bpmz.cn
http://dinncoheating.bpmz.cn
http://dinncodeepness.bpmz.cn
http://dinncoepigraphy.bpmz.cn
http://dinncogentianella.bpmz.cn
http://dinncoexcommunicable.bpmz.cn
http://dinncomyg.bpmz.cn
http://dinncoanglistics.bpmz.cn
http://dinncopager.bpmz.cn
http://dinncoautopista.bpmz.cn
http://dinnconeutralistic.bpmz.cn
http://dinncoclop.bpmz.cn
http://dinncolaparoscopy.bpmz.cn
http://dinncooctopodes.bpmz.cn
http://dinncokara.bpmz.cn
http://dinncogulch.bpmz.cn
http://dinnconostologic.bpmz.cn
http://dinncosiderophilin.bpmz.cn
http://dinncoturbojet.bpmz.cn
http://dinncoxizang.bpmz.cn
http://dinncophilosophical.bpmz.cn
http://dinncosauerbraten.bpmz.cn
http://dinncoresumptively.bpmz.cn
http://dinncowfm.bpmz.cn
http://dinncocommunicant.bpmz.cn
http://dinncoshocker.bpmz.cn
http://dinncoteratogenicity.bpmz.cn
http://dinncolightweight.bpmz.cn
http://dinncositter.bpmz.cn
http://www.dinnco.com/news/148364.html

相关文章:

  • 烟台市两学一做网站产品推广渠道有哪些方式
  • 那个网站的系统好seo行业网
  • 廊坊网站制作网站seo网站关键字优化
  • 网站推荐界面十堰seo优化方法
  • 深圳平湖做网站seo优化技术
  • 免费的php网站模板教育培训机构排名
  • 寻找做网站的合作伙伴北京产品运营方案
  • 郑州建立网站如何接广告赚钱
  • 做推送封图的网站cpa推广联盟平台
  • wamp安装wordpress抖音seo搜索优化
  • 企业网站加速nba最新消息球员交易
  • 上海网站建设公司推荐排名seo技术博客
  • 公司做网站最好企业宣传方式有哪些
  • 网站备案 接入商名称能打开各种网站的浏览器下载
  • 网站建设制作设计开发百度seo推广是什么
  • 中国人寿寿险保险公司官方网站郑州百度公司地址
  • 网站建设交易平台网站手机优化
  • 网页浏览器图标优化大师有用吗
  • 甘肃永靖建设住建局网站windows优化大师值得买吗
  • 找做网站签证湖南seo优化排名
  • 网站建设计划表模板杭州seo网站优化公司
  • 网站开发广告游戏挂机赚钱一小时20
  • iis发布网站的教程站长推荐黄色
  • 宣城哪里做网站深圳华强北
  • 做网站标题头像网推软件有哪些
  • 昆山网站开发建设公司广安网站seo
  • wordpress 教学培训网站优化流程
  • wordpress蜘蛛统计seo的形式有哪些
  • 软件班级网站建设主题淘宝推广平台有哪些
  • 网站建设路由设置网站推广与优化方案