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

自己做微商想做个网站编写网站

自己做微商想做个网站,编写网站,wordpress contactform,商务网站规划与建设课设的项目需求一、为什么要引入服务注册中心 (1)为什么引入 微服务硬编码 IP / 端口的核心问题总结 环境变更敏感:当支付微服务的 IP 或端口修改时,订单微服务必须同步修改所有调用该支付服务的代码或配置,否则将无法正常通信无法…

一、为什么要引入服务注册中心

(1)为什么引入

微服务硬编码 IP / 端口的核心问题总结

  1. 环境变更敏感:当支付微服务的 IP 或端口修改时,订单微服务必须同步修改所有调用该支付服务的代码或配置,否则将无法正常通信
  2. 无法实现负载均衡:若支付微服务部署了多个实例(如 3 台服务器),订单微服务硬编码固定 IP 只能访问其中一台,无法自动将请求分散到多个实例,导致部分服务器压力过大,另一部分闲置
  3. 扩展维护困难:当系统需要增加微服务实例(如新增 2 台支付服务器)时,硬编码的方式需要手动修改所有订单微服务的配置,操作繁琐且容易遗漏

解决方案方向 

  1. 服务注册与发现:使用工具(如 Eureka、Consul)自动管理服务的 IP 和端口,调用方无需硬编码
  2. 负载均衡:结合 Ribbon、Nginx 等工具,自动将请求分发到多个微服务实例
  3. 配置中心:通过集中配置管理(如 Nacos、Apollo)动态更新服务地址,减少手动修改

(2)对照大纲

二、为什么不再使用传统老牌的Eureka

(1)Eureka停更进维

(2)Eureka对初学者不友好

(3)注册中心独立且和微服务解耦

目前主流服务中心,希望单独隔离出来而不是作为一个独立微服务嵌入到系统中

  1. 按照Netflix的之前的思路,注册中心Eureka也是作为一个微服务且需要程序员自己开发部署
  2. 实际情况,希望微服务和注册中心分离解耦,注册中心和业务无关的,不要混为一谈
  3. 提供类似tomcat一样独立的组件,微服务注册上去使用,是个成品

(4)阿里巴巴Nacos的崛起

Service discovery and configuration management

三、consul简介

(1)是什么

  1. consul官网地址Consul by HashiCorp
  2. What is Consul?
  3. 禁止使用问题:
    1. 条款链接:
    2. 放心用:
  4. spring consul:Spring Cloud Consul

(2)能干嘛

  1. 服务发现:提供HTTP和DNS两种发现方式
  2. 健康监测:支持多种方式,HTTP、TCP、Docker、Shell脚本定制化监控
  3. KV存储:key、value的存储方式
  4. 多数据中心:Consul支持多数据中心
  5. 可视化Web界面

(3)去哪下

Install | Consul | HashiCorp Developer

(4)怎么玩

  1. 网址:Spring Cloud Consul
  2. 两大作用:

四、安装并运行consul

(1)官网下载

(2)下载完成后只有一个cosul.exe文件,对应全路径下查看版本号信息

(3)使用开发模式启动

  1. consul agent -dev
  2. 通过以下地址可以访问Consul的首页:http://localhost:8500
  3. 结果页面

五、服务注册与发现

(1)服务提供者8001

5.1.1支付服务provider8001注册进consul

5.1.2POM

在原来POM文件的基础上,加上:

<!--SpringCloud consul discovery --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-consul-discovery</artifactId></dependency>

配置来源:Quick Start :: Spring Cloud Consul 

5.1.3YML

####Spring Cloud Consul for Service Discoverycloud:consul:host: localhostport: 8500discovery:service-name: ${spring.application.name}

 

5.1.4主启动

添加@EnableDiscoveryClient,开启服务发现

5.1.5启动8001并查看consul控制台

(2)服务消费者80

5.2.1修改微服务cloud-consumer-order80

5.2.2POM

<!--SpringCloud consul discovery --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-consul-discovery</artifactId></dependency>

5.2.3YML

spring:application:name: cloud-consumer-order####Spring Cloud Consul for Service Discoverycloud:consul:host: localhostport: 8500discovery:prefer-ip-address: true #优先使用服务ip进行注册service-name: ${spring.application.name}

5.2.4主启动类

5.2.5Controller

5.2.6启动80并查看consul控制台

5.2.7访问测试地址

  1. 访问http://localhost:80/consumer/pay/get/10
  2. 结果如何:
    1. 一个bug
    2. java.net.UnknownHostException: cloud-payment-service

5.2.8配置修改RestTemplateConfig

(3)三个注册中心异同点

5.3.1CAP

  1. C(Consistency):强一致性
  2. A(Availability):可用性
  3. P(Partition Tolerance):分区容错性

5.3.2经典CAP图

  1. 最多只能同时较好的满足两个
  2. CAP理论的核心是:一个分布式系统不可能同时很好的满足一致性,可用性和分区容错性这三个需求
  3. 因此,根据 CAP 原理将 NoSQL 数据库分成了满足 CA 原则、满足 CP 原则和满足 AP 原则三 大类:
    1. CA - 单点集群,满足一致性,可用性的系统,通常在可扩展性上不太强大
    2. CP - 满足一致性,分区容忍性的系统,通常性能不是特别高
    3. AP - 满足可用性,分区容忍性的系统,通常可能对一致性要求低一些
(1)AP(Eureka)

  1. 当网络分区出现后,为了保证可用性,系统B可以返回旧值,保证系统的可用性
  2. 当数据出现不一致时,虽然A, B上的注册信息不完全相同,但每个Eureka节点依然能够正常对外提供服务,这会出现查询服务信息时如果请求A查不到,但请求B就能查到。如此保证了可用性但牺牲了一致性结论:违背了一致性C的要求,只满足可用性和分区容错,即AP
(2)CP(Zookeeper/Consul)
  1. 当网络分区出现后,为了保证一致性,就必须拒接请求,否则无法保证一致性
  2. Consul 遵循CAP原理中的CP原则,保证了强一致性和分区容错性,且使用的是Raft算法,比zookeeper使用的Paxos算法更加简单。虽然保证了强一致性,但是可用性就相应下降了,例如服务注册的时间会稍长一些,因为 Consul 的 raft 协议要求必须过半数的节点都写入成功才认为注册成功 ;在leader挂掉了之后,重新选举出leader之前会导致Consul 服务不可用。结论:违背了可用性A的要求,只满足一致性和分区容错,即CP

六、服务配置与刷新

(1)分布式系统面临的→配置问题

微服务架构下,由于服务拆分导致大量独立服务实例,每个服务都需配置信息。集中式动态配置管理可解决重复配置问题,例如统一管理各服务相同的数据库配置,当主机迁移时只需修改一处即可全局生效

(2)官网说明

(3)服务配置案例步骤

6.3.1需求

  1. 通用全局配置信息,直接注册进Consul服务器,从Consul获取
  2. 既然Consul获取自然要遵守Consul的配置规则要求

6.3.2修改cloud-provider-payment8001

6.3.3POM

<!--SpringCloud consul config-->
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-consul-config</artifactId>
</dependency>
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>

6.3.4YML

(1)配置规则说明

(2)新增配置文件bootstrap.yml
  1. 是什么
  2. bootstrap.yml
    spring:application:name: cloud-payment-service####Spring Cloud Consul for Service Discoverycloud:consul:host: localhostport: 8500discovery:service-name: ${spring.application.name}config:profile-separator: '-' # default value is ",",we update '-'format: YAML# config/cloud-payment-service/data
    #       /cloud-payment-service-dev/data
    #       /cloud-payment-service-prod/data

(3)application.yml

6.3.5consul服务器key/value配置填写

(1)参考规则

(2)创建config文件夹,以/结尾

(3)config文件夹下分别创建其它三个文件夹,以/结尾

(4)在上述三个文件夹下分别创建data内容,data不再是文件夹

6.3.6controller

@Value("${server.port}")
private String port;@GetMapping(value = "/pay/get/info")
private String getInfoByConsul(@Value("${atguigu.info}") String atguiguInfo){return "atguiguInfo:" + atguiguInfo + ",port:" + port;
}

6.3.7测试

(4)动态刷新案例步骤

6.4.1问题

接上一步,我们在consul的dev配置分支修改了内容,马上访问,结果无效

6.4.2步骤

  1. @RefreshScope主启动类添加
  2. bootstrap.yml修改下(只为教学,实际别改)spring.cloud.consul.config.watch.wait-time
  3. 测试:

(5)思考

  1. 截至到这,服务配置和动态刷新全部通过,假设我重启Consul,之前的配置还在吗?
  2. 试试(之前的配置不在了)
http://www.dtcms.com/wzjs/396480.html

相关文章:

  • 网站建设策划书有哪些内容关键词排名
  • 哈尔滨公众号制作seo网站排名助手
  • wordpress 编辑器字体大小关键词优化排名软件流量词
  • 威海建设集团网站网络推广外包怎么接单
  • wordpress自适应画廊宁波seo在线优化公司
  • 营销型高端网站建设价格杭州网站推广与优化
  • 台州本地做网站的mac蜜桃923色号
  • 成立一个做网站的工作室网站统计数据
  • 建设网站jw100网站设计公司有哪些
  • 婚纱类网站素材搜索引擎大全网站
  • 网站行程表怎么做宁波的网络营销服务公司
  • 松原公司做网站关键词优化怎么写
  • 网站竞价 英文百度seo关键词排名 s
  • 网络分销渠道百度快照优化推广
  • 河南省建设培训中心网站seo外包软件
  • php mysql 企业网站源码北京seo运营推广
  • 什么是网站建设方案武汉新闻最新消息
  • 攀枝花网站开发泰安seo培训
  • 介绍邯郸的网页seo诊断工具
  • win8怎么建设网站企业网站
  • 网站建设加优化什么软件推广效果好
  • 做网站 帮别人卖服务器西安关键词网站排名
  • vb做的网站怎么调试seo提升关键词排名
  • 苹果做安卓游戏下载网站南昌seo实用技巧
  • 网站设计示例赵阳竞价培训
  • 潍坊网站建设案例seo收费标准
  • 网站建设发票的税点佛山网络排名优化
  • 个体营业执照网上年报seo优化方案总结
  • 沙井网站推广销售外包公司
  • 设计相关网站网络营销的现状和发展趋势