1. 微服务架构之服务注册与发现(一)
一、服务注册中心的由来
假如没有服务注册中心,我们会干些什么事情呢?
在传统行业的项目架构中以下的方案最为常见了:
这种架构开发、部署都是最简单的,一般适用于中小企业访问量并不是太多的情况下,各个系统服务一台机器就搞定了。系统之间的调用也是拿到对方的IP+PORT直接连接。
接下来可能因为应用B开始访问量大了,单台机器已经不能满足我们的需求,于是一些反向代理工具应运而出,其中比较常见的有Apache、Nigix,架构演变为:
相比之前的应用B的单台机器访问,这种nginx代理的方式减轻了服务器的压力,但是可能会出现Nginx挂了,那么整个服务也不可用,于是又来了这么一套架构:
这样看方案算是完美了吧。然后事情并不是想象的那么一帆风顺,这还只是应用A调用一个应用B,如果应用A调用的可能是应用B、C、D、E...,这种完全就不知道他后面到底还想干嘛,这种架构看似可以,但是绝对会累死运维的(nginx的配置将会非常混乱,直接导致运维不干了)。
服务注册中心干些什么事情呢?
上面提到的那种靠人力(主要是运维干的事情)比较繁琐,还不好维护,有这么几点不方便:应用服务的地址变了、双十一搞活动服务器新增等等。那么我们可以有这么的一种架构:
服务注册中心主要是维护各个应用服务的ip+port列表,并保持与各应用服务的通讯,在一定时间间隔内进行心跳检测,如果心跳不能到达则对服务IP列表进行剔除,并同时通知给其它应用服务进行更新。同样要是有新增的服务进来,应用服务会向注册中心进行注册,服务注册中心将通知给其它应用进行更新。每个应用都有需要调用对应应用服务的地址列表,这样在进行调用时只要处理客户负载杂均衡即可。
二、微服务注册中心
1.Zookeeper
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。
上面的话直接摘抄网络的内容,国内很多公司做分布式开发最初的选型大部分都是采用bbo框架。bbo框架注册中心主要使用zookeeper。zookeeper服务端与客户端的底层通讯为netty。zookeeper采用CAP理论中的CP,一般集群部署最少需要3台机器。
2.Euraka
先来看一下euraka的架构图:
Register:服务注册
当Eureka客户端向Eureka Server注册时,它提供自身的元数据,比如IP地址、端口,运行状况指示符URL,主页等。
Renew:服务续约
Eureka客户会每隔30秒发送一次心跳来续约。 通过续约来告知Eureka Server该Eureka客户仍然存在,没有出现问题。 正常情况下,如果Eureka Server在90秒没有收到Eureka客户的续约,它会将实例从其注册表中删除。 建议不要更改续约间隔。
Fetch Registries:获取注册列表信息
Eureka客户端从服务器获取注册表信息,并将其缓存在本地。客户端会使用该信息查找其他服务,从而进行远程调用。该注册列表信息定期(每30秒钟)更新一次。每次返回注册列表信息可能与Eureka客户端的缓存信息不同, Eureka客户端自动处理。如果由于某种原因导致注册列表信息不能及时匹配,Eureka客户端则会重新获取整个注册表信息。 Eureka服务器缓存注册列表信息,整个注册表以及每个应用程序的信息进行了压缩,压缩内容和没有压缩的内容完全相同。Eureka客户端和Eureka 服务器可以使用JSON / XML格式进行通讯。在默认的情况下Eureka客户端使用压缩JSON格式来获取注册列表的信息。
Cancel:服务下线
Eureka客户端在程序关闭时向Eureka服务器发送取消请求。 发送请求后,该客户端实例信息将从服务器的实例注册表中删除。该下线请求不会自动完成,它需要调用以下内容:
DiscoveryManager.getInstance().shutdownComponent();
Eviction 服务剔除
在默认的情况下,当Eureka客户端连续90秒没有向Eureka服务器发送服务续约,即心跳,Eureka服务器会将该服务实例从服务注册列表删除,即服务剔除。
自我保护机制:
既然Eureka Server会定时剔除超时没有续约的服务,那就有可能出现一种场景,网络一段时间内发生了 异常,所有的服务都没能够进行续约,Eureka Server就把所有的服务都剔除了,这样显然不太合理。所以,就有了 自我保护机制,当短时间内,统计续约失败的比例,如果达到一定阈值,则会触发自我保护的机制,在该机制下, Eureka Server不会剔除任何的微服务,等到正常后,再退出自我保护机制。自我保护开关(eureka.server.enableself-preservation: false)
3.Consul
consul推荐的架构图:
Consul不像Euraka的部署那么简单,他是go语言开发的,需要运维单独部署,有提供java的客户端连接,采用的是CAP的CP。
4.Nacos
Euraka是Spring Cloud Netflix早期版本中推荐使用的,后来euraka1.0版本不再维护,euraka2.0已经闭源,导致很多新项目基于Spring Cloud Netflix 开发的选型变迁为Consul.
Nacos是阿里开源的服务注册中心,它可以与spring cloud aliaba集成使用。
Nacos的官方介绍:
Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您实现动态服务发现、服务配置管理、服务及流量管理。
Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构(例如微服务范式、云原生范式)的服务基础设施。
Nacos 地图
Nacos 生态图
如 Nacos 全景图所示,Nacos 无缝支持一些主流的开源生态,例如
Spring Cloud
Apache Dubbo and Dubbo Mesh TODO
Kubernetes and CNCF TODO
三、服务注册与发现技术选型
以下是来自网上的一个分享:
除了上述的几种以外,笔者更推荐使用Nacos作为服务注册中心。
推荐理由:
Nacos服务注册表结构Map<namespace, Map<group::serviceName, Service>>采用多层次Map结构,控制的颗粒度更细,支持金丝雀模式发布,心跳同步机制也更快速,服务更新更及时。
2. 微税平台安全接入服务器地址
浏览器查询。查询方法如下:
1、打开手机,点击浏览器。
2、在浏览器中搜索微税平台安全接入服务器地址。
3、找到服务器地址并点击进入。
3. 基于DNS搭建高可用Eureka注册中心
按Alt + 回车键,将会生成eureka-server.zip,解压缩后得到一个maven 项目,将该项目录入IDE。
我们首先来看一下pom文件,可以看出项目中引用了spring-cloud-starter-netflix-eureka-server, 并且springboot 的版本号为:2.1.2.RELEASE, Spring Cloud的版本号为:Greenwich.RC2RC2 表示还没有正式发布,只是第二个Release Candidate。
接下来我们只需要两个步骤,
a、修改EurekaServerApplication, 在@SpringBootApplication的注解上面,加入一个新的注解:@EnableEurekaServer
b、在resources 目录中加入application.yml 文件, 并配置以下信息:
一个简单的Eureka 注册中心就已经可以使用了,我们运行一下这个spring boot 应用,找开浏览器:localhost:8761,即可看到我们的注册中心就已经运行启来了。并且EUREKA-SERVER也注册到自己的注册中心了。
单节点的注册中心已经搭建完毕,但单节点的注册中心存在单点故障的可能,不能用于生产环境。生产环境的Eureka一般采用集群方式进行部署。
通过client.serviceUrl.defaultZone配置多个peer节点,因为是在单机上测试,所以修改了host文件,并且使用不同的端口号来启动注册中心。正式的生产环境请根据自己的实际情况进行配置,比如:第一台Eureka的IP地址为:192.168.0.100,则defaultZone配置其他三台注册中心http://192.168.0.101:8761/eureka/,http://192.168.0.102:8761/eureka/,http://192.168.0.103:8761/eureka/
依次启动4台注册中心,打开网页:http://localhost:8764
可以看到其它三台注册中心已经出现在已注册的replicas和可用的replicas列表里边。
如上图所示,4台注册中心,每台注册中心需要配置其他三台服务器,以Eureka 1为例,其配置如下:
注册中心是本应该是无状态的,可以横向扩展。但由于每台注册中心的配置都不一样,所以扩展起来比较麻烦,需要修改配置文件,这样就无法做到快速的扩容。
微服务客户端需要配置注册中心的地址,使用的是如下的配置:
由于配置的是固定的IP地址,如果我们要扩容注册中心,增加新的注册中心节点,那我们就需要修改微服务客户端的配置文件,将新的注册中心节点进入的服务器列表中。试想一下,如果有几十个微服务,每个微服务有4个节点,那将会要修改上百个配置文件。很显然这种方式不太可取,从软件设计角度来说,违反了开闭原则。
其实Eureka 注册中心还有另一种高可用配置方式,基于DNS。Eureka天生就可以部署在像AWS这样的公有云上,并且可以跨Region,跨Available Zone部署。虽然我们不用部署在云端,依然可以利用这一特性,我们可以把Region看作我们数据中心的机房,Avaiable Zone 看作是机房中的网络区域,结合内部DNS服务来实现高可用的注册中心。
画重点:
a. region: default,配置地区
b. useDnsForFetchingServiceUrls,表示基于DNS获取服务信息
c. eurekaServerDNSName: eureka.txzq.com.cn,配置域名服务器名称
键:txt.default.eureka.txzq.com.cn 值:shenzhen.eureka.txzq.com.cn
键:txt.shenzhen.eureka.txzq.com.cn 值:172.18.10.1 172.18.10.2 172.18.10.3 172.18.10.4
第一条记录表示,default 区域,包含了哪些可用区,我们用shenzhen表示是深圳机房,txt记录的值就设置为:shenzhen.eureka.txzq.com.cn
第二第记录表示 , shenzhen机房有哪些服务器,多台服务器使用空格格开。
如果在本地测试,需要搭建一台自己的DNS服务器,可以参考我的另一篇文章: 基于Docker快速搭建DNS Server
Client View是指DNS服务应用到哪一个网段,比如:172.18.10.0/24网段的IP连接到BIND服务器,才会解析指定的域名。
在添加域名的时候,需要指定Client View,这里我们选择我们刚刚创建的View_172.18.10.0,指的是只有在这个网段的IP访问这台DNS服务器,才能解析。
添加完一级域名后我们刷一下这个ZONE,然后设置一下本地DNS服务器
DNS域名服务器验证通过后,我们接下来就可以在为这个域名添加我们所需要的txt 记录了。
到这里我们的准备工作就已经基本完成了。使用Maven将注册中心编译成,输出jar包。新建一个Eureka的docker镜像,并启动4个容器。基于DNS的注册中心就搭建完毕了。
你只需要对DNS记录进行变更,就可以实现动态的、快速扩容/缩容了。
关于如何将Eureka部署到Docker,请参考另一篇文章:
4. 微信公众号的服务如何设置
展开快讯
登录
首页
专栏
问答
沙龙
团队主页
TVP
返回腾讯云官网
微信公众号后台服务器配置教程
本文是以主要是以 语言开发的后台,其它语言的类似
一、服务器地址配置
微信公众号开发第一步,就是需要配置开发的服务器地址,如下图
weichat-server-1
对应的服务器端代码
上面的 是指定 微信相关的处理到统一个文件路口。
二、JSSDK 域名设置
当我们需要在页面中调用微信的功能接口时,就需要用到微信提供的 库,这时就需要在服务器端配置对应的域名地址。
注意:设置的域名必须是要备案的域名
weichat-jssdk
对应的服务器端代码
如上图所示,我设置的域名是 ,在后台认证时会去访问 该文件,这样我们就需要把该文存放的路径设置为可以访问的。这里使用了 函数。
三、网页授权域名设置
当我们在公众中需要跳转页面时,如果该页面的域名地址没有在微信后台中配置,在每次跳转时都会有个安全提示页面出现,这样用户体验相当不好,这时我们就需要设置对应的域名地址。
展开快讯
登录
首页
专栏
问答
沙龙
团队主页
TVP
返回腾讯云官网
微信公众号后台服务器配置教程
本文是以主要是以 语言开发的后台,其它语言的类似
一、服务器地址配置
微信公众号开发第一步,就是需要配置开发的服务器地址,如下图
weichat-server-1
对应的服务器端代码
上面的 是指定 微信相关的处理到统一个文件路口。
二、JSSDK 域名设置
当我们需要在页面中调用微信的功能接口时,就需要用到微信提供的 库,这时就需要在服务器端配置对应的域名地址。
注意:设置的域名必须是要备案的域名
weichat-jssdk
对应的服务器端代码
如上图所示,我设置的域名是 ,在后台认证时会去访问 该文件,这样我们就需要把该文存放的路径设置为可以访问的。这里使用了 函数。
三、网页授权域名设置
当我们在公众中需要跳转页面时,如果该页面的域名地址没有在微信后台中配置,在每次跳转时都会有个安全提示页面出现,这样用户体验相当不好,这时我们就需要设置对应的域名地址。
5. 苹果instagram怎么注册详细教程
苹果手机注册ins教程在这里,非常详细。应用市场里,下载“简书”
或者“豆瓣”,然后在这两个应用里面搜“ins糊涂站”,就可以看到教程和工具了
6. 现在小微创业者如果注册公司,又没有钱租办公室注册,只能到众创空间里办公,那么注册地址怎么弄
想要创业,建议您选择一个合适的创业项目,看自身是否具备相关项目的资质,找对项目之后脚踏实地努力。当然创业过程中资金也是需要考虑的问题,如果您启动资金有限,可以通过小额贷款的方式来解决。
推荐使用有钱花,有钱花是度小满金融旗下信贷品牌,面向用户提供安全便捷、无抵押、无担保的信贷服务,借钱就上度小满金融APP(点击官方测额)。有钱花消费类贷款,日息低至0.02%起,年化利率低至7.2%起,具有申请简便、利率低放款快、借还灵活、息费透明、安全性强等特点。
度小满金融818福利已正式开启,2021年8月9日-2021年9月30日,通过度小满金融APP参加818福利活动,邀请生意好友可以获得现金奖励,最高1万元,同时好友可以获得“日息万1 借款利率优惠”。 更多活动详情,请关注度小满金融APP,奖品多多,敬请期待!
和您分享有钱花消费类产品的申请条件:主要分为年龄要求和资料要求两个部分。
一、年龄要求:在18-55周岁之间。特别提示:有钱花谢绝向在校学生提供消费分期贷款,如您是在校学生,请您放弃申请。
二、资料要求:申请过程中需要提供您的二代身份证、本人借记卡。
注意:申请只支持借记卡,申请卡也为您的借款银行卡。本人身份信息需为二代身份证信息,不能使用临时身份证、过期身份证、一代身份证进行申请。
此答案由有钱花提供,因内容存在时效性等客观原因,若回答内容与有钱花产品的实际息费计算方式不符,以度小满金融APP-有钱花借款页面显示为准。希望这个回答对您有帮助。