<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[sHuXnHs]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/shuxnhs</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; shuxnhs]]></copyright><item><title><![CDATA[使用istio管理dubbo服务]]></title><link>https://blog.youkuaiyun.com/shuxnhs/article/details/115453849</link><guid>https://blog.youkuaiyun.com/shuxnhs/article/details/115453849</guid><author>shuxnhs</author><pubDate>Tue, 06 Apr 2021 09:17:39 +0800</pubDate><description><![CDATA[Istio是什么
Istio，希腊语，意思就跟他的图标一样，意扬帆起航。据说作者为了取名，翻阅了几个小时的希腊字段，主要是为了沿用k8s建立的航海主题，帆船与船舵相互配合才能扬帆起航。

官方对 Istio 的介绍浓缩成了一句话：An open platform to connect, secure, control and observe services. 可以说Istio是用来处理服务间通信的基础设施层，这个简介也介绍了Istio的四个重要的功能：

Connect： 控制服务间的调用流量，能够实现灰]]></description><category></category></item><item><title><![CDATA[Istio学习之CRD3⃣️：ServiceEntry]]></title><link>https://blog.youkuaiyun.com/shuxnhs/article/details/115303592</link><guid>https://blog.youkuaiyun.com/shuxnhs/article/details/115303592</guid><author>shuxnhs</author><pubDate>Mon, 29 Mar 2021 15:55:30 +0800</pubDate><description><![CDATA[Istio学习之CRD3⃣️：ServiceEntry
服务网格中的工作负载想要访问网格外的服务时，有以下三种方法：

允许Envoy代理将请求透传到未在网格内部配置的服务（默认，通常情况下配置更严格的控制是更可取的）
配置 ServiceEntry以提供对外部服务的受控访问。
对于特定范围的IP，使用global.proxy.includeIPRanges配置完全绕过Envoy代理。

本篇主要来介绍一下OutboundTrafficPolicy.Mode的设置，ServiceEntry的使用与概念。
介]]></description><category></category></item><item><title><![CDATA[Istio学习之CRD2⃣️：DestinationRule]]></title><link>https://blog.youkuaiyun.com/shuxnhs/article/details/115290565</link><guid>https://blog.youkuaiyun.com/shuxnhs/article/details/115290565</guid><author>shuxnhs</author><pubDate>Sun, 28 Mar 2021 23:40:28 +0800</pubDate><description><![CDATA[Istio学习之CRD2⃣️：DestinationRule
今天来学习Istio关于流量管理的另一个CRD——DestinationRule，根据字面意思即目标规则，我们可以理解VirtualService为流量的路由，那么DestinationRule则为流量路由之后的去处。
介绍


首先献上官方文档：https://istio.io/latest/zh/docs/reference/config/networking/destination-rule/


样例
apiVersion: networ]]></description><category></category></item><item><title><![CDATA[Istio学习之CRD1⃣️：VirtualService]]></title><link>https://blog.youkuaiyun.com/shuxnhs/article/details/115221744</link><guid>https://blog.youkuaiyun.com/shuxnhs/article/details/115221744</guid><author>shuxnhs</author><pubDate>Thu, 25 Mar 2021 23:43:02 +0800</pubDate><description><![CDATA[Istio学习之CRD1⃣️：VirtualService
Istio的自定义资源有五十多个，今天先对Network部分的VirtualService的学习做个记录。
介绍


首先献上官方文档：https://istio.io/latest/zh/docs/reference/config/networking/virtual-service/


VirtualService主要是定义了服务的路由规则，如果流量满足了我们设定的匹配规则，则会根据我们的设定将流量发送到服务注册表中的服务/版本


样例
a]]></description><category></category></item><item><title><![CDATA[如何学习云原生]]></title><link>https://blog.youkuaiyun.com/shuxnhs/article/details/114884127</link><guid>https://blog.youkuaiyun.com/shuxnhs/article/details/114884127</guid><author>shuxnhs</author><pubDate>Tue, 16 Mar 2021 15:52:09 +0800</pubDate><description><![CDATA[如何学习云原生
什么是云原生
云原生以容器、微服务、DevOps，持续交付等技术为基础建立的一套云技术产品体系。这是一种新型技术体系，是云计算未来的发展方向。从1999年到2024年，本地部署和市场云化此消彼长，企业上云的速度随着虚拟化等技术的发展大大加快，未来可能将成为各大企业的一项基础能力。所以作为一名刚入行或资深的工程师，我觉得都应该对云原生相关的概念和技术了解，提升自己的核心竞争力。
如何从零开始学习云原生
云原生技术体系非常的庞大，我们可能经常听到docker，k8s（kubernetes）等相关]]></description><category></category></item><item><title><![CDATA[Etcd V2与V3存储差异]]></title><link>https://blog.youkuaiyun.com/shuxnhs/article/details/109440352</link><guid>https://blog.youkuaiyun.com/shuxnhs/article/details/109440352</guid><author>shuxnhs</author><pubDate>Sun, 01 Nov 2020 22:59:28 +0800</pubDate><description><![CDATA[Etcd V2与V3存储差异
在Etcd v2与v3两个版本中，使用的存储方式完全不同，所以两个版本的数据并不兼容，对外提供的接口也是不一样的，不同版本的数据是相互隔离的，只能使用对应的版本去存储与获取。
V2——基于内存的存储

在v2版本中，数据是以树形结构完全存储在内存中的，只有进行持久化的时候才会将数据以JSON格式存储进磁盘。

v2的watch机制


在v2版本中，存在着一个EventHistory表，EventHistory表是有长度限制的，默认是1000.


v2中存在一个全局的版本cu]]></description><category></category></item><item><title><![CDATA[使用Docker快速部署你的Phalapi项目]]></title><link>https://blog.youkuaiyun.com/shuxnhs/article/details/108862265</link><guid>https://blog.youkuaiyun.com/shuxnhs/article/details/108862265</guid><author>shuxnhs</author><pubDate>Tue, 29 Sep 2020 09:33:40 +0800</pubDate><description><![CDATA[使用Docker快速部署你的Phalapi项目
为什么要用docker

docker作为一种新兴的虚拟化技术，相较于传统的部署方式，使用docker去部署我们的项目，可以有更多的好处，如
更快的部署，启动时间
传统去部署我们的phalapi项目或phalapi-pro项目，需要安装nginx，php，fpm，mysql等等环境，php的拓展，nginx的配置，fpm的配置等等问题都可以
花费很多时间，即使自己亲手部署过很多次，隔一小段时间后重新去部署一个新环境也会出现其他问题，使用docker可以大大缩短]]></description><category></category></item><item><title><![CDATA[Go基础数据结构学习——slice]]></title><link>https://blog.youkuaiyun.com/shuxnhs/article/details/105608038</link><guid>https://blog.youkuaiyun.com/shuxnhs/article/details/105608038</guid><author>shuxnhs</author><pubDate>Sat, 18 Apr 2020 23:38:30 +0800</pubDate><description><![CDATA[Go基础数据结构学习——slice
slice


Slice切片：是一个数组某部分的引用，在内存中是一个包含三个域的结构体，第一个是指向数据的第一个元素的指针，第二个是切片的长度，第三个是切片的容量
type slice struct {
	array unsafe.Pointer
	len   int
	cap   int
}



slice不能简单使用==来测试两个slice是否拥有相同的...]]></description><category></category></item><item><title><![CDATA[Go基础数据结构学习——string]]></title><link>https://blog.youkuaiyun.com/shuxnhs/article/details/105524199</link><guid>https://blog.youkuaiyun.com/shuxnhs/article/details/105524199</guid><author>shuxnhs</author><pubDate>Tue, 14 Apr 2020 23:24:34 +0800</pubDate><description><![CDATA[Go基础数据结构学习——string


string在Go语言内存模型中用一个2字长的数据结构表示，一个是指向字符串存储的数据的指针，另一个为长度数据。
type stringStruct struct {
	str unsafe.Pointer
	len int
}



由于string中不包含内存空间，只有一个内存的指针，可以方便的进行传输而不用担心内存拷贝，非常的轻量化，但是字符串字面量...]]></description><category></category></item><item><title><![CDATA[go协程控制——context]]></title><link>https://blog.youkuaiyun.com/shuxnhs/article/details/104744884</link><guid>https://blog.youkuaiyun.com/shuxnhs/article/details/104744884</guid><author>shuxnhs</author><pubDate>Mon, 09 Mar 2020 01:49:25 +0800</pubDate><description><![CDATA[context
为什么有context


首先,如果我们在并发程序中,如果需要我们去通知子协程结束我们会怎么做?


我们可能会通过一个channel+select去通知,如下:
package main

import (
	"fmt"
	"time"
)

func main()  {
	exitChan := make(chan bool)

	go func() {
		for {
		...]]></description><category></category></item><item><title><![CDATA[go的*锁*包——sync]]></title><link>https://blog.youkuaiyun.com/shuxnhs/article/details/104665016</link><guid>https://blog.youkuaiyun.com/shuxnhs/article/details/104665016</guid><author>shuxnhs</author><pubDate>Wed, 04 Mar 2020 23:00:12 +0800</pubDate><description><![CDATA[go的锁包——sync
上一篇文章介绍了各种锁的基本概念,这篇文章主要学习一下Go的标准库sync包,提供了基本的同步基元.

要注意的是,sync除了Once和WaitGroup类型,大部分都是适用于低水平程序线程,高水平的同步使用channel通信更好一些

互斥锁——Mutex


互斥锁: 同一时刻只能有一个读或写的场景
var mu sync.Mutex

func main()  {
...]]></description><category></category></item><item><title><![CDATA[各种锁系列]]></title><link>https://blog.youkuaiyun.com/shuxnhs/article/details/104615147</link><guid>https://blog.youkuaiyun.com/shuxnhs/article/details/104615147</guid><author>shuxnhs</author><pubDate>Mon, 02 Mar 2020 17:05:27 +0800</pubDate><description><![CDATA[各种锁系列
平时我们在开发或学习中,数据库中,某个编程语言中经常会听到各种锁,主要用来对资源并发过程做一些限制,接下来对各种锁进行一个总结与学习!
乐观锁与悲观锁


首先,乐观锁与悲观锁并不是指具体的某种东西,而是一种设计的思路


乐观锁 (Optimistic Lock)


乐观锁表示非常的乐观,认为业务操作去拿锁并不会有什么问题(冲突),进行完业务操作后需要去更新数据的最后才去拿锁


...]]></description><category></category></item><item><title><![CDATA[Redis通信协议——RESP]]></title><link>https://blog.youkuaiyun.com/shuxnhs/article/details/103589486</link><guid>https://blog.youkuaiyun.com/shuxnhs/article/details/103589486</guid><author>shuxnhs</author><pubDate>Wed, 18 Dec 2019 00:14:14 +0800</pubDate><description><![CDATA[通信协议简述

RESP(Redis Serialization ProtocolRedis)序列化协议
Redis 协议规则:

将传输的结构数据分为 5 种最小单元类型，单元结束时统一加上回车换行符
号\r\n。
单行字符串 以 + 符号开头。(也可用多行的形式,实现统一)
多行字符串 以 $ 符号开头，后跟字符串长度。

NULL长度为-1 : $-1\r\n
空串长度填 0:    $0\...]]></description><category></category></item><item><title><![CDATA[Redis——漏斗限流]]></title><link>https://blog.youkuaiyun.com/shuxnhs/article/details/103565545</link><guid>https://blog.youkuaiyun.com/shuxnhs/article/details/103565545</guid><author>shuxnhs</author><pubDate>Mon, 16 Dec 2019 17:15:30 +0800</pubDate><description><![CDATA[漏斗限流模块——redis-cell

安装: 同样使用docker安装

// 拉取镜像
docker pull hsz1273327/redis-cell:latest
// 后台运行,映射本地6381端口
docker run -d -p 6381:6379 hsz1273327/redis-cell
// 运行
redis-cli -p 6381

主要命令解析
CL.THROTTLE [...]]></description><category></category></item><item><title><![CDATA[Redis——布隆过滤器]]></title><link>https://blog.youkuaiyun.com/shuxnhs/article/details/103563800</link><guid>https://blog.youkuaiyun.com/shuxnhs/article/details/103563800</guid><author>shuxnhs</author><pubDate>Mon, 16 Dec 2019 15:52:53 +0800</pubDate><description><![CDATA[安装使用

rebloom作为插件安装 centos安装rebloom
docker安装:

// 拉取镜像
docker pull redislabs/rebloom
// 后台运行,映射到本地6380端口
docker run -d -p 6380:6379 redislabs/rebloom
// 连接
redis-cli -p 6380



布隆过滤器的主要命令和误判

bf.add...]]></description><category></category></item><item><title><![CDATA[Redis队列——消息队列,延迟队列]]></title><link>https://blog.youkuaiyun.com/shuxnhs/article/details/103547775</link><guid>https://blog.youkuaiyun.com/shuxnhs/article/details/103547775</guid><author>shuxnhs</author><pubDate>Sun, 15 Dec 2019 16:25:51 +0800</pubDate><description><![CDATA[异步消息队列

使用的数据结构: list

主要实现: go实现简单消息队列

package main

import (
	"encoding/json"
	"fmt"
	"github.com/gomodule/redigo/redis"
	"os"
)

type Producer struct {
	// 生产者
}

func (p *Producer)publish(conn re...]]></description><category></category></item><item><title><![CDATA[Redis——分布式锁]]></title><link>https://blog.youkuaiyun.com/shuxnhs/article/details/103475700</link><guid>https://blog.youkuaiyun.com/shuxnhs/article/details/103475700</guid><author>shuxnhs</author><pubDate>Tue, 10 Dec 2019 15:24:29 +0800</pubDate><description><![CDATA[什么是分布式锁

分布式锁: 进行逻辑处理时经常会遇到并发问题。可以借助redis来实现分布式锁,简单来说就是限制两个操作不同时进行,每次执行某个操作的时候用setnx()加锁,当没被锁再执行下一个操作.限制程序的并发执行!
一般步骤: 使用 setnx(set if not exists) 指令，只允许被一个客户端占坑。先来先占，用完了，再调用 del 指令释放茅坑。
setnx lock:XX...]]></description><category></category></item><item><title><![CDATA[Redis小知识]]></title><link>https://blog.youkuaiyun.com/shuxnhs/article/details/103462707</link><guid>https://blog.youkuaiyun.com/shuxnhs/article/details/103462707</guid><author>shuxnhs</author><pubDate>Mon, 09 Dec 2019 18:21:47 +0800</pubDate><description><![CDATA[Redis的端口为什么是9379?
这个端口号也不 是随机选的，而是由手机键盘字母「MERZ」 的位置决定的。「MERZ」在 Antirez 的朋友 圈语言中是「愚蠢」的代名词，它源于意大利 广告女郎「Alessia Merz」在电视节目上说了一 堆愚蠢的话.
Redis的过期清理?
redis使用hashtable存储数据的过期时间,但不会时刻去检测数据是否过期,清理过期数据主要分两个阶段完成,...]]></description><category></category></item><item><title><![CDATA[MySQL的delete操作对表空间的影响]]></title><link>https://blog.youkuaiyun.com/shuxnhs/article/details/100885759</link><guid>https://blog.youkuaiyun.com/shuxnhs/article/details/100885759</guid><author>shuxnhs</author><pubDate>Mon, 16 Sep 2019 14:20:15 +0800</pubDate><description><![CDATA[delete操作的几种情况

drop操作: 不管什么引擎,Innodb还是myisam都会释放磁盘空间
truncate操作: truncate和drop一样都会释放磁盘空间,但与drop不同的是,truncate=drop+create,就是会新建一张空表,保留了mysql的表结构
delete操作:

delete from table_name删除了全部数据,对于myisam会释放磁盘空间...]]></description><category></category></item><item><title><![CDATA[HTTP的认证]]></title><link>https://blog.youkuaiyun.com/shuxnhs/article/details/97195754</link><guid>https://blog.youkuaiyun.com/shuxnhs/article/details/97195754</guid><author>shuxnhs</author><pubDate>Thu, 25 Jul 2019 01:22:08 +0800</pubDate><description><![CDATA[粗略的ＢＡＳＩＣ认证

Ｂａｓｅ６４解码后就能得到用户ＩＤ和密码，而且无法实现认证注销的操作．
DIGEST认证
SSL认证
表单认证

Session


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