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

做网站的宽和高有限制吗/互联网营销师报名

做网站的宽和高有限制吗,互联网营销师报名,环保部网站建设项目,怎么做盗版视频网站什么是微服务注册中心? 在上一篇文章《Spring Cloud介绍》中,提到有一句话:微服务框架可以为这些微小的服务提供统一的管理和必要的工具,使它们更易于开发和维护。 “统一的管理和必要的工具”正是微服务框架与单纯地“分布式应…
什么是微服务注册中心?

在上一篇文章《Spring Cloud介绍》中,提到有一句话:微服务框架可以为这些微小的服务提供统一的管理和必要的工具,使它们更易于开发和维护。

“统一的管理和必要的工具”正是微服务框架与单纯地“分布式应用”的区别所在。我们在后续的文章也主要是介绍这样一些Spring Cloud提供的管理微服务的组件和工具。

微服务注册中心最主要的功能正是用来“管理”微服务的。它相当于一个信息中心,保存着每个微服务的ip地址等信息。这样当其它微服务要调用这个微服务时,就可以去注册中心拿到ip,再根据ip去访问相应的微服务。如下图:
在这里插入图片描述

为什么需要注册中心?

注册中心相当于“婚介所”或者“房屋中介所”。试想一下,如果没有一个这样的中间角色,当一个微服务(消费者)需要调用另一个微服务(生产者)时,它需要保存生产者的地址(如ip,端口等信息)。而这个时候一旦生产者的地址产生了变化,比如:

  • 新增了节点
  • 减少了节点
  • 原有结点的ip或端口变化

就会导致所有的消费者更改配置。传统分布式系统是对每个API创建一个对外的网关,一般使用ELB等负载均衡工具再配上DNS系统来实现
在这里插入图片描述
这样虽然一定程度上能解决服务调用之间的问题,但仍然需要维护大量的ELB/DNS等信息,而且当结点想要动态地增加或删除时,需要去修改ELB的配置。

使用注册中心后,结点的注册、删除、健康检查等功能都能自动化。消费者再也不需要手动去挨个寻找和维护任何生产者的地址信息,只是定时去注册中心取一下就行。

注册中心技术选型
FeatureeurekaConsulzookeeperetcd
服务健康检查可配支持服务状态,内存,硬盘等(弱)长连接,keepalive连接心跳
多数据中心支持
kv 存储服务支持支持支持
一致性算法raftpaxos增强raft
capapcpcpcp
使用接口(多语言能力)http(sidecar)支持 http 和 dns客户端http/grpc
watch 支持支持 long polling/大部分增量全量/支持long polling支持支持 long polling
自身监控metricsmetricsmetrics
安全acl /https aclhttps支持(弱)
spring cloud 集成已支持已支持已支持已支持

关于分布式CAP的理论,本文不细讲,有兴趣的读者自己去了解一下或者参考我的这篇文章我所了解的分布式事物。C代表一致性,A代表高可用性,P代表分区容错性。在分布式系统中,三者不能同时满足,而P是一定需要满足的,所以常见的分布式系统要么满足AP,要么满足CP。

本文以Eureka为例来搭建和使用注册中心,Eureka是Netflix自己开发的,它是通过在客户端配置所有注册中心结点来实现高可用的:

eureka:instance:hostname: localhost
client:registerWithEureka: falsefetchRegistry: falseserviceUrl:defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
使用Eureka
  • 首先创建一个主Maven工程,在其pom文件引入依赖,Spring Boot版本为2.1.5.RELEASESpring Cloud版本为Finchley.RELEASE。这个pom文件作为父pom文件,起到依赖版本控制的作用,其他module工程继承该pom。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.bazooka</groupId><artifactId>Eureka-sample</artifactId><version>0.0.1-SNAPSHOT</version><packaging>jar</packaging><name>com.bazooka</name><description>Demo project for Spring Boot</description><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.5.RELEASE</version></parent><modules><module>eureka-server</module><module>service-client</module></modules><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version><spring-cloud.version>Finchley.RELEASE</spring-cloud.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>
</project>
  • 创建eureka-server,作为服务注册中心。
    File -> New -> Project…
    在这里插入图片描述
    选择cloud discovery->eureka server ,然后一直下一步就行了。
    在这里插入图片描述
    创建好之后其pom继承了父pom文件,并引入spring-cloud-starter-netflix-eureka-server的依赖。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.bazooka</groupId><artifactId>eureka-server</artifactId><version>0.0.1-SNAPSHOT</version><packaging>jar</packaging><name>eureka-server</name><description>Demo project for Spring Boot</description><parent><groupId>com.bazooka</groupId><artifactId>Eureka-sample</artifactId><version>0.0.1-SNAPSHOT</version></parent><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId></dependency></dependencies></project>

首先需要在springboot工程的启动application类上加@EnableEurekaServer

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

在默认情况下erureka server也是一个eureka client ,必须要指定一个 server。eureka server的配置文件appication.yml

server:port: 8761eureka:instance:hostname: localhost
client:registerWithEureka: falsefetchRegistry: falseserviceUrl:defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/spring:application:name: eurka-server

通过eureka.client.registerWithEureka:false和fetchRegistry:false来表明自己是一个eureka server。
启动项目之后,输入如下链接可以看到页面
在这里插入图片描述

  • 创建一个eureka client作为服务提供者
    创建过程同eureka server,不再赘述,创建好的eureka client的pom如下
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.bazooka</groupId><artifactId>service-client</artifactId><version>0.0.1-SNAPSHOT</version><packaging>jar</packaging><name>service-client</name><description>Demo project for Spring Boot</description><parent><groupId>com.bazooka</groupId><artifactId>Eureka-sample</artifactId><version>0.0.1-SNAPSHOT</version></parent><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

通过注解@EnableEurekaClient 表明自己是一个eureka client。

@SpringBootApplication
@EnableEurekaClient
@RestController
public class ServiceClientApplication {public static void main(String[] args) {SpringApplication.run(ServiceClientApplication.class, args );}@Value("${server.port}")String port;@GetMapping("/client")public String home(@RequestParam(value = "name", defaultValue = "bazooka") String name) {return "hi " + name + " ,i am from port:" + port;}}

仅仅@EnableEurekaClient是不够的,还需要在配置文件中注明自己的服务注册中心的地址,application.yml配置文件如下

server:port: 8762spring:application:name: service-clienteureka:client:serviceUrl:defaultZone: http://localhost:8761/eureka/

启动项目,会在client端看到如下文字。
在这里插入图片描述
同时在server端也可以看到如下效果。
在这里插入图片描述
这个时候就会发现一个服务已经在注册中心了。

源码地址

http://www.lbrq.cn/news/1412605.html

相关文章:

  • 韩国风格网站整站源码/百度快速优化排名软件
  • 扎染毕业设计代做网站/seo网站优化排名
  • 网站开发公司东莞/qq推广引流怎么做
  • 宏升温岭网站建设/百度上海总部
  • 开彩票网站做私庄/百度账号人工申诉
  • 什么企业需要网站建设/做企业网站建设的公司
  • 做旅游宣传图的网站有哪些/成都seo招聘
  • 网站优化靠谱/的磁力搜索引擎
  • 合肥做网站便宜/友链交换网站
  • 成都做app定制开发多少钱/石家庄seo报价
  • 江西昌宇建设工程公司网站/线上营销推广方式
  • 瑞昌建站公司/自己做网站怎么做
  • bugku中网站被黑怎么做/外贸网络推广
  • 网站动态背景欣赏/seo优化排名工具
  • wordpress 显示备案号/seo基本步骤
  • 怎样做一个简单的网站首页/宁波关键词网站排名
  • 新疆网站建设品牌/保定seo排名外包
  • 今日生猪价格表/seo在线论坛
  • 微商网站建设/2023年7月疫情爆发
  • 建设京剧网站的意义/百度推广业务员
  • 网站集约化建设讲话稿/中国域名注册官网
  • 株洲企业网站建设费用/站长素材音效
  • 帆布网站做哪个/百度框架户开户渠道代理
  • 江门企业网站建设公司/石家庄最新新闻事件
  • 帮公司做网站赚钱吗/宁波seo推广
  • 黔东南网站建设gzklyy/指数工具
  • 社交网站页面设计/危机公关处理
  • 品牌网站建设四川/企业宣传片视频
  • 小程序转换成网页/海阳seo排名优化培训
  • 网站的网络公司/广告推广软文案例
  • Day8--滑动窗口与双指针--1004. 最大连续1的个数 III,1658. 将 x 减到 0 的最小操作数,3641. 最长半重复子数组
  • Linux 中断机制深度分析
  • Python实战--基于Django的企业资源管理系统
  • 海洋牧场助力可持续发展,保护海洋生态平衡
  • 10 SQL进阶-SQL优化(8.15)
  • STM32CUBEMX配置stm32工程