新年10个Flag实现中~
访问量
1.9M
文章数
150
运行天
1136
一、和Istio的融合问题1.1Istio的mTLS默认开启导致无法访问K8S服务在Istio1.4.x版本,MeshPolicy默认开启全局mTLS(values.global.mtls.enable=true),如果服务网格没有定义DestinationRule,那么就会使用mTLS。如果此时网格内的服务想要访问外部的K8S服务(比如数据库等,没有进入网格的K8S服务),istio会以为它是网格内的,仍然以mTLS建立连接,导致对端服务无法响应。因此,需要显式地设置Istio的DestinationRule,禁用掉mTLS:apiVersion:networking.istio.io/v1alpha3kind:DestinationRulemetadata:name:mysql-1nam
前言长连接放到K8S之后,做性能测试就发现连接量上不去,在7~8W连接左右的时候,ELB的“波动队列”就开始暴增至1024,然后开始丢包。我一直有其他的工作要处理,这个排查又比较费时间,所以一直把这个事情搁置了。在迭代新版本的时候,发现连接量降至单个容器6W左右,反向优化最为致命…我的同事开始排查这个问题,最终找到是ELB的问题,记录一下他的思考过程,积累经验。一、问题描述在AWS的ELB(CLB)中,有一项监控指标叫做波动队列(SurgeQueue),长度最大为1024。波动队列的作用是,当后端服务器没有响应的时候,它会将请求包缓存起来,等服务器有响应了之后再把这些包慢慢消化掉,如果流量过大超过1024,则直接将包丢弃掉,避免在服务器处理能力有问题的时候遇到突增流量导致崩溃。在性能测试(P
一、背景JWT(JsonWebToken,RFC7519)是常用的轻量级授权认证手段,常用于Web服务校验客户端身份。JWT分为三部分:Header:头部,明文,比如密钥IDkid、或者签名算法alg等等Payload:内容,明文,包含了业务的信息,比如可以加入一些不敏感的clientId等字段Signature:签名,利用“加密算法”对JWT进行签名,保证没有被篡改过值得注意的是,这里的数据都是明文的,算法实际上执行的是最后的数据签名功能,只能保证“不被篡改”,而不是保证“不被解密”,所以后面看到“加密、解密”,其实都是为签名服务的。签名例如,一个完整的JWT形式是"Header.Payload.Signature",中间用英文句号的“.”连接起来,如果选择的算法为HS256,那么会将前面
Kafka中,必须要知道的概念就是消息和日志段。一、V0和V1消息在0.11之前,消息被称为Message,一批以数组形式保存的消息被称为消息集合(MessageSet)。消息集合只是简单的聚合,消息集合中的每条消息都有自己的元信息(Metadata),这个并没有聚合。0.10前Messageversion=0,0.10~0.11版本Messageversion=1,这个Messageversion被存储为魔术数字(MagicNumber),放在消息里面。1.1V0消息  V0版本的结构都比较简单:attribute:1字节,低3位是压缩类型,0=NONE,1=GZIP,2=Snappy,3=LZ4(LZ4需要kafka0.9.x以上)key:key可以为null,如果为
一、Kafka的基本框架在Kafka中,发布和订阅的对象称为主题(Topic),主题可以有多个。向主题发布消息的应用称为生产者(Producer),订阅这些主题消息的称为消费者(Consumer)。生产者可以有多个,可以在不同的系统;消费者也可以有多个,同样也可以在不同的系统。生产者和消费者都称为客户端(Clients),这个概念与Kafka服务器(Server)对应。 Kafka服务端可以有多个实例构成集群,每个实例都称为一个消息代理(Broker),这些实例可以分布在一台机器上,也可以分布在多台机器上以达到高可用的目的。你可以在消息中间件中经常看到Broker这个词,例如MQTTBroker等,Broker的本意是“经纪人”、“代理人”等等,中间件正是这样一个中间代理的角色。K
一、系统间的通信方式分布式系统常常需要进行系统间通信:常见的系统间通信方式有两种:远程过程调用(RemoteProcedureCall,RPC)消息队列(MessageQueue,MQ)对于RPC,我们可以同步请求(请求、等待;处理、响应),也可以异步请求(请求、标记请求、等待;处理、完成;释放标记/超时处理)。然而RPC有很多缺点:(1)任何一方出现故障,都可能会造成消息丢失。当然你也可以通过应用/框架重试+多实例来缓解,但只要任何一方全部挂掉,消息必然丢失。(2)平台、协议、开发语言等差异导致对接复杂度高。虽然GRPC也是跨平台跨语言的,但并非所有的系统都会引入GRPC,protobuf也不能完全包含所有的开发语言。(3)服务器性能差异,导致消息堆积。上游数据源(比如上游服务器、或者作为
一、Kafka的名字是怎么来的我一直就怀疑是不是初中学的小说家“弗朗茨·卡夫卡”,没错就是。JayKreps(工作于LinkedIn,Kafka创始人之一):我想既然Kafka是为了写数据而产生的,那么用作家的名字来命名会显得更有意义。我在大学时期上过很多文学课程,很喜欢FranzKafka。况且,对于开源项目来说,这个名字很酷。不过,名字和应用本身基本没有太多联系。  ——《Kafka权威指南》P13二、Kafka和Scala、Java是什么关系?Kafka是使用Java开发的应用程序。 ——《Kafka权威指南》P14 截至本书写作时,Kafka的版本是0.9.0.1,对应的Scala版本是2.11.0。——《Kafka权威指南》P17 
前言最近在系统地学习知识,因此5月~6月的目标是完成Zookeeper和Kafka的学习(以前高考都还有老师给你一份提纲要学什么东西,现在自己给自己定义提纲才发现是很痛苦的事情)。学习提纲初步定义的框架如下:1、Kafka原理和源码动物书《Kafka权威指南》(ISBN978-7-115-47327-1):了解正确的基本知识和术语,不会被网文骗…Kafka官网文档:主要关注0.9.0(重大变化,低于该版本的没有意义了)、2.2.1(目前使用到的)、最新版本(最新的特性)。有关如何选择版本学习,我也是参考的商业的软件一般会选择什么版本的Kafka,比如AWS的MSK服务,它提供的版本是1.1.1、2.2.1、2.3.1、2.4.1,说明这几个版本是有特殊的地方的,比如十分稳定,或者支持了什么重
12345... 17下一页