<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[冯立彬的博客]]></title><description><![CDATA[关注性能、效率、大型网站架构、分布式应用、大数据计算等]]></description><link>https://blog.csdn.net/fenglibing</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; fenglibing]]></copyright><item><title><![CDATA[Spring Gateway集成 Nacos注册中心不能够发现服务的问题解决]]></title><link>https://blog.csdn.net/fenglibing/article/details/120675317</link><guid>https://blog.csdn.net/fenglibing/article/details/120675317</guid><author>fenglibing</author><pubDate>Sat, 09 Oct 2021 17:31:37 +0800</pubDate><description><![CDATA[一、问题描述

我们现在是在用Nacos替换Eureka，原来Eureka和Spring gateway运行正常，可以通过Spring gateway调用注册到Eureka中的服务。

当前Spring cloud的版本是Hoxton.SR8，Nacos discovery的版本为0.9.0.RELEASE，使用的Nacos版本为2.0.3。

Nacos替换Eureka改动的地方如下：

１、去掉POM中Eureka的引入；

２、去掉主类中引入的@EnableEurekaClient注解；

３、引入N]]></description><category></category></item><item><title><![CDATA[Nacos使用域名做为服务地址遇到的问题及解决方案]]></title><link>https://blog.csdn.net/fenglibing/article/details/120371891</link><guid>https://blog.csdn.net/fenglibing/article/details/120371891</guid><author>fenglibing</author><pubDate>Wed, 22 Sep 2021 13:42:55 +0800</pubDate><description><![CDATA[一、发现问题

应用启动时，增加Nacos服务端的配置信息。

应用使用IP加端口连接Nacos服务器时，运行一切正常：


#启动参数增加以下Nacos参数
-Dspring.cloud.nacos.discovery.namespace=DEV 
-Dspring.cloud.nacos.discovery.server-addr=127.0.0.1:8848

但是将server-addr换成解析好的域名就有问题：


#Nacos默认的服务端端口为8848，因而Nacos服务端的端口必须配置，
#否]]></description><category></category></item><item><title><![CDATA[Eureka迁移到Nacos之服务名称大小问题解决]]></title><link>https://blog.csdn.net/fenglibing/article/details/120347530</link><guid>https://blog.csdn.net/fenglibing/article/details/120347530</guid><author>fenglibing</author><pubDate>Fri, 17 Sep 2021 14:11:39 +0800</pubDate><description><![CDATA[我们应用往Eureka中注册使用的名称以及应用内部通过Feign调用，使用的服务名称都是小写，如user-service，但是注册到Eureka中后，应用的名称全部都是以大写的形式存储及展现，由于Eureka客户端对大小写的支持都是一样的，因而通过Feign使用小写的名称调用就没有问题。

现在是将Spring Cloud注册中心由Eureka迁移到Nacos，但是Nacos服务端及Nacos客户端对服务名称的支持是区分大小写的，即从Eureka同步到Nacos中的大写服务名称，通过Feign中使用小写的服]]></description><category></category></item><item><title><![CDATA[HASentinel支持Nacos做为配置中心控制台改造完成]]></title><link>https://blog.csdn.net/fenglibing/article/details/120166200</link><guid>https://blog.csdn.net/fenglibing/article/details/120166200</guid><author>fenglibing</author><pubDate>Tue, 07 Sep 2021 20:16:01 +0800</pubDate><description><![CDATA[HASentinel（https://gitee.com/laofeng/hasentinel）支持Nacos做为配置中心控制台改造完成，先来张Nacos中配置的截图：



后续会修改修改客户端，不过当前项目较忙，会先把Eureka切换为Nacos弄完后再接着弄了。

本次同时把支持更多配置中心的架构给设计好了，后续会续还会支持Apollo，觉得好请观注项目的后续发展。
...]]></description><category></category></item><item><title><![CDATA[Nacos的连接错误：ErrCode:-401, ErrMsg:Client not connected,current status:STARTING的解决办法]]></title><link>https://blog.csdn.net/fenglibing/article/details/120164149</link><guid>https://blog.csdn.net/fenglibing/article/details/120164149</guid><author>fenglibing</author><pubDate>Tue, 07 Sep 2021 18:34:17 +0800</pubDate><description><![CDATA[最近在将HASentinel（https://gitee.com/laofeng/hasentinel）接入Nacos配置中心，在连接的时候怎么都不能够连接成功，报错误：

ErrCode:-401, ErrMsg:Client not connected,current status:STARTING

使用的Nacos server及client的版本都是2.0.3。

创建ConfigService使用的是方法ConfigFactory.createConfigService(Properties)，]]></description><category></category></item><item><title><![CDATA[NacosSync支持Eureka与Nacos的双向批量同步改造完成]]></title><link>https://blog.csdn.net/fenglibing/article/details/120067132</link><guid>https://blog.csdn.net/fenglibing/article/details/120067132</guid><author>fenglibing</author><pubDate>Thu, 02 Sep 2021 19:37:58 +0800</pubDate><description><![CDATA[默认情况下Nacos只支持单个应用的同步，针对数百个应用要配置同步，单页面配置就是一项不小的工作量，且每新增加一个应用就需要增加一个同步配置，如果是Eureka与Nacos的双向同步则需要增加两条配置，当然可以直接在数据库中插入数据，但是这毕竟也不是长久之计，使用上也会不便，更加不符合程序员的做事风格。

改造完成后Eureka与Nacos双向配置，就只以下两条配置记录：



且以后不论是Eureka或是Nacos有应用注册，都会同步给对彼此，不需要新增任何的配置：

注册到Eureka的应用会自动同步到]]></description><category></category></item><item><title><![CDATA[NacosSync从Eureka批量同步应用到Nacos改造完成]]></title><link>https://blog.csdn.net/fenglibing/article/details/120024434</link><guid>https://blog.csdn.net/fenglibing/article/details/120024434</guid><author>fenglibing</author><pubDate>Tue, 31 Aug 2021 18:55:53 +0800</pubDate><description><![CDATA[默认情况下Nacos只支持单个应用的同步，针对数百个应用要配置同步，单页面配置就是一项不小的工作量，当然可以直接在数据库中插入数据，但是这毕竟也不是长久之计，使用上也会不便，更加不符合程序员的做事风格。

于是就直接针对源码开刀，改造源码支持应用名称配置为“*”时，表示从Eureka中同步全部的应用信息：



现在已经改造完成了，一项配置完成了原来数百项配置才能够完成的工作，哦耶！

后续接着改造从Nacos中到Eureka的批量化同步！


...]]></description><category></category></item><item><title><![CDATA[Nacos作为Dubbo注册中心时Consumer更新Provider的机制]]></title><link>https://blog.csdn.net/fenglibing/article/details/119898164</link><guid>https://blog.csdn.net/fenglibing/article/details/119898164</guid><author>fenglibing</author><pubDate>Wed, 25 Aug 2021 16:14:45 +0800</pubDate><description><![CDATA[一、NacosRegistry

Consumer端启动时，通过NacosRegistry中的doSubscribe(...)方法，往Nacos服务端发起注册及获取Provider信息：



方法doSubscribe(URL, NotifyListener)中根据Consumer端的url生成对应的Provider服务名称，如此时consumer的url如下：


consumer://192.168.22.198/cn.raysonblog.shopserviceprovider.service.Rp]]></description><category></category></item><item><title><![CDATA[Nacos配置中心回调机制]]></title><link>https://blog.csdn.net/fenglibing/article/details/119895079</link><guid>https://blog.csdn.net/fenglibing/article/details/119895079</guid><author>fenglibing</author><pubDate>Tue, 24 Aug 2021 17:56:55 +0800</pubDate><description><![CDATA[一、Nacos的动态配置

nacos 服务端保存了配置信息，客户端连接到服务端之后，根据 dataID、group及tanant（就是Namesapce）可以获取到具体的配置信息，当服务端的配置发生变更时，客户端会通过长轮询的HTTP长连接获取到变更通知，然后再由客户端主动去获取变更后的配置信息。

二、Nacos回调机制

１、Nacos 服务端创建了相关的配置项（创建 ConfigService并实例化 ConfigService）；

２、客户端添加 Listener进行监听：

客户端通过在Cli]]></description><category></category></item><item><title><![CDATA[基于Maven的YAPI文档生成插件yapidoc-maven-plugin]]></title><link>https://blog.csdn.net/fenglibing/article/details/119781877</link><guid>https://blog.csdn.net/fenglibing/article/details/119781877</guid><author>fenglibing</author><pubDate>Wed, 18 Aug 2021 15:54:59 +0800</pubDate><description><![CDATA[功能介绍
自动扫描Spring的Controller代码并生成OpenAPI文档，无代码侵入。
对比与Swageer的代码侵入显得更加简洁。
项目地址：https://gitee.com/laofeng/yapidoc-maven-plugin
诞生原因
在开发的过程中，尤其是联调的过程中，接口出入参的修改是很频繁的一件事。这就导致开发过程中，修改了接口参数缺忘记修改接口文档。
因此需要一个工具能够自动读取Java类中的注释来生成文档。
对比Swagger
Springfox的代码侵入性太强了，使得代码一点]]></description><category></category></item><item><title><![CDATA[HASentinel被GITEE推荐了]]></title><link>https://blog.csdn.net/fenglibing/article/details/119173158</link><guid>https://blog.csdn.net/fenglibing/article/details/119173158</guid><author>fenglibing</author><pubDate>Wed, 28 Jul 2021 10:42:31 +0800</pubDate><description><![CDATA[早上打开Gitee，突然发现项目HASentinel被Gitee推荐了，感觉心里好开心！



HASentinel特性：

１、流控及降级配置改造为存储到Zookeeper中；
２、将应用上报的Metrics持久化存储到Influxdb集群中；
３、Metrics由Sentinel控制台主动获取，修改为由应用端主动上报，同时支持控制台集群化部署；
４、优化Sentinel控制台的操作，将原来只能够针对应用的各个节点的配置操作，优化为针对应用本身的配置操作，然后应用到应用集群的所有节点；
５、增加Grafa]]></description><category></category></item><item><title><![CDATA[将开源RocketMQ的Producer下线后重新启用的操作]]></title><link>https://blog.csdn.net/fenglibing/article/details/119003874</link><guid>https://blog.csdn.net/fenglibing/article/details/119003874</guid><author>fenglibing</author><pubDate>Fri, 23 Jul 2021 11:36:17 +0800</pubDate><description><![CDATA[由于平台应用场景的需要，允许将启动好的开源版本的RocketMQ的Producer执行下线、上线等操作，下线操作简单，调用其shutdown()可以方便的完成，但是上线这个操作着实费了点力气，主要发现以下几个问题：

１、关闭后的Producer不可以再次启用

执行了下线操作即执行了shutdown()方法的Producer，该Producer的状态变会为SHUTDOWN_ALREADY，是不允许再次上线的，当直接对该Producer执行start()方法时，就会报状态错误，也就是同一个Producer下]]></description><category></category></item><item><title><![CDATA[阿里云RocketMQ的订阅类Subscription的HashCode及Equals的设计问题]]></title><link>https://blog.csdn.net/fenglibing/article/details/118853920</link><guid>https://blog.csdn.net/fenglibing/article/details/118853920</guid><author>fenglibing</author><pubDate>Sat, 17 Jul 2021 11:29:14 +0800</pubDate><description><![CDATA[题外话

设计并实现了一个消息投递平台，可以实现对不同业务场景的消息进行订阅，并将这些接收的消息根据业务场景需要，将其转投递到外部的ＥＳ、RocketMQ、Get API、Post API以及Spring Cloud类型的API，让应用以最小的接入及改造成本，实现应用的解耦。

问题

本次发现的问题为源消息中间为阿里云的RocketMQ，当我们在针对同一个Topic的不同Tag进行消息订阅的时候，发现最终都只能够订阅一个Tag，其它Tag的消息不能够订阅，以下代码是组装消息订阅的Map实现：



如此时]]></description><category></category></item><item><title><![CDATA[Docker下安装RocketMQ服务及控制台的Shell脚本]]></title><link>https://blog.csdn.net/fenglibing/article/details/118722490</link><guid>https://blog.csdn.net/fenglibing/article/details/118722490</guid><author>fenglibing</author><pubDate>Wed, 14 Jul 2021 10:54:13 +0800</pubDate><description><![CDATA[该脚本包括RocketMQ NameServer、RocketMQ Broker及RocketMQ Console的一键安装，其中rocketmq的版本为当前最新版本4.8.0，使用的是foxiswho打包的镜像，而rocketmq-console-ng在Docker上面找了一下，打包的版本至少都是半年以前的了，因而自己拉取最新源码打包并推送到了Docker镜像仓库中。

当前安装脚本通过自定义网络及指定网络别名的方式，解决了不同Docker容器之间的相互访问的网络问题，脚本如下：


#创建RocketM]]></description><category></category></item><item><title><![CDATA[Java项目发布到Maven中央仓库操作步骤及相关注意事项]]></title><link>https://blog.csdn.net/fenglibing/article/details/118442979</link><guid>https://blog.csdn.net/fenglibing/article/details/118442979</guid><author>fenglibing</author><pubDate>Sun, 04 Jul 2021 11:07:40 +0800</pubDate><description><![CDATA[1 注册maven(oss)账号

注册地址: https://issues.sonatype.org/secure/Signup!default.jspa





注册成功后登陆到首页

2 创建一个Issue





Project: 项目类型，一般为Community Support。
Issue Type: 问题类型， 新的项目为New Project。
Summary:项目名称，如HASentinel。
Description:项目描述，介绍一下当前项目。
Group Id:对应pom.xml]]></description><category></category></item><item><title><![CDATA[我当宝贝的eeefff.com域名，被我误会了５年]]></title><link>https://blog.csdn.net/fenglibing/article/details/118421520</link><guid>https://blog.csdn.net/fenglibing/article/details/118421520</guid><author>fenglibing</author><pubDate>Fri, 02 Jul 2021 18:40:41 +0800</pubDate><description><![CDATA[自2016我注册了域名eeeffff.com以后，该域名就被我当宝一样收藏着，虽然在移动互联网时候，现在域名已经不是那么重要的了，但是好的域名收着心理也觉得有成就感，证明自己没有在PC时代白混。





但是eeeffff.com一直被我以为是eeefff.com，直到今天我才发现这个问题！

为了让HASentinel（基于阿里Sentinel做了高可用及存储持久化改造的项目，可以看我前一篇文章了解）的相关组件上传到Maven中间仓库，就需要做域名拥有者认证，其中有一个认证环节就是给域名增加一条TXT解]]></description><category></category></item><item><title><![CDATA[书名终于确定了：Elasticsearch从原理到实践]]></title><link>https://blog.csdn.net/fenglibing/article/details/115964922</link><guid>https://blog.csdn.net/fenglibing/article/details/115964922</guid><author>fenglibing</author><pubDate>Wed, 21 Apr 2021 17:18:19 +0800</pubDate><description><![CDATA[经过几天的修改和删减，500多页的书减少到了373页，博文视点的宋编辑也推荐了一个适合本书内容的名字：《Elasticsearch从原理到实践》，虽然这个名字土了点，但是编辑说这是主流书籍的名称，那好吧，就定它了。如果想了解一下这本书，可以看一下我发布的关于Elasticsearch的文章，本书从零基础开始讲解，包括原理讲解、索引操作、文档操作、Mapping及聚合功能等章节，顺便问一下，各位看官对Elasticsearch感兴趣吗？附图中有一些技术书籍的取名参考，感兴趣的可以收藏备用哦。








]]></description><category></category></item><item><title><![CDATA[Eureka节点信息同步延迟及单个注册中心节点load偏高问题的排查]]></title><link>https://blog.csdn.net/fenglibing/article/details/115299580</link><guid>https://blog.csdn.net/fenglibing/article/details/115299580</guid><author>fenglibing</author><pubDate>Mon, 29 Mar 2021 14:06:09 +0800</pubDate><description><![CDATA[问题现象
１、网关会报访问后端正在发布的应用超时的错误：





２、Eureka注册中心负载Load不均衡







二、问题分析

１、Eureka客户端同步节点信息的分析

Eureka-Client中的com.netflix.discovery.DiscoveryClient类，为负责与Eureka注册中心进行沟通协调的实现类，包括应用节点往注册中心注册、应用节点状态向注册中心更新状态、从注册中心同步注册应用信息等功能。

com.netflix.discovery.DiscoveryCl..]]></description><category></category></item><item><title><![CDATA[一个操作阿里云K8S容器的简易命令]]></title><link>https://blog.csdn.net/fenglibing/article/details/111476056</link><guid>https://blog.csdn.net/fenglibing/article/details/111476056</guid><author>fenglibing</author><pubDate>Mon, 21 Dec 2020 15:40:19 +0800</pubDate><description><![CDATA[每次都是写完成的K8S命令操作，比较繁锁，就写了一个小小的工具（注：要使用该工具，需要先在本地配置好阿里云的K8S配置，并且该工具需要在Linux的环境化使用）简化了操作，操作如下：



完整的Shell脚本如下：


#!/bin/bash
#功能说明：根据输入的应用名称，直接进入到其对应的K8S Docker容器中

#设备要访问环境的namespace，该值必须配置
namespace="你要操作的的namespace"
if [ "$namespace" == "" ]; then
    ech]]></description><category></category></item><item><title><![CDATA[IP限流平台的设计及实现－－已经开源了]]></title><link>https://blog.csdn.net/fenglibing/article/details/107566386</link><guid>https://blog.csdn.net/fenglibing/article/details/107566386</guid><author>fenglibing</author><pubDate>Fri, 24 Jul 2020 17:46:16 +0800</pubDate><description><![CDATA[先放几张效果图上来，设计及实现文档后续会补充：






]]></description><category></category></item></channel></rss>