- 博客(188)
- 资源 (1)
- 收藏
- 关注
原创 为了让每个程序员都能掌握TCP分析技能,我开发了一个TCP分析工具,降低 Wireshark 入门门槛
此外,我还发现很多人在学习 TCP 协议时都感到非常困难,尤其是理解连接建立时的三次握手和终止连接的四次握手,即使有大量的图片和动图。因此,我萌生了创建一个 app 的想法,以降低初学者学习 TCP 协议和应用层协议的难度,并降低 TCP 分析的入门门槛。目前已经解码的应用层协议有:HTTP 、WebSocket 、Redis ,正在开发中的:Mysql。ChatTCP 背后的灵感源于我自己过去的需求。是一款离线 TCP 分析应用程序,致力于简化 TCP 分析,使其像阅读聊天记录一样简单!
2024-11-18 12:43:08
300
原创 2024年了,TCP分析工具有哪些?
IxChariot / Ixia - 这类工具主要用于网络性能测试,包括TCP在内的各种协议的吞吐量、延迟等测试,适合企业级网络设备的性能评估。选择合适的TCP分析工具取决于您的具体需求,比如是否需要图形界面、是否专注于特定协议、是否需要高级分析功能,以及对操作简便性的要求。Tcpflow - 一个基于命令行的工具,专注于捕获和分析TCP数据流,适合需要文本或文件形式的数据流分析的场景。iperf - 用于测量TCP和UDP网络带宽性能的工具,可以生成不同类型的流量,帮助评估网络的传输能力。
2024-11-14 16:32:21
882
原创 ChatTCP:一款离线TCP数据包分析macOS APP,致力于让分析TCP数据包像看聊天记录一样简单
ChatTCP是一款离线TCP数据包分析macOS APP,致力于让分析TCP数据包像看聊天记录一样简单!
2024-09-03 20:44:53
761
转载 复盘我从0开发文件上传中间件,上线一年多遇到的疑难杂症
前期的技术选型非常重要,理想的架构自然好,但要考虑团队有没有人能hold住,出了问题是否能解决。如果hold不住,技术选型应该保守一点,可以不那么完美。
2024-03-03 09:00:00
132
转载 中间件服务上线,那跟电影里的拆炸弹一样刺激
Apollo的恢复策略需要指定IP,如果是容器化部署的服务,容器重启IP就不同,而技术栈的原因,启动的时候拿不到正确的配置容器就启动不起来,所以配置方面也缺失灰度能力。这次升级,给我的感觉就像电影里面的情节,在电影中经常出现的拆炸弹情节:一个人被迫面对拆除一枚定时炸弹的任务,他必须仔细选择正确的线剪断,以防止炸弹爆炸。所以,因为这一点粗心,漏了一个配置,结果服务没启起来。我们没有控制到百分比流量的粒度,而是节点粒度,如果节点只有两个,那就是百分之五十的粒度,这跟全量没区别,相当于直接上线了。
2024-03-02 18:15:55
91
1
原创 云原生专栏第一阶段完结,第二阶段开始
由于方向的错误,我们这个项目也迎来了终结。但我们换了个方向做云原生SaaS平台,而这个平台也不再基于kubevela,也不使用云厂商的Serverless,而是自实现Pod调度器,结合云提供的节点弹性扩缩容,实现自己的Serverless,没有最低request的限制,并通过超卖算法,实现资源的合理利用,进一步优化成本,体现Serverless的优势。此篇是该专栏的完结篇,后续该专栏不再更新。
2023-12-16 12:35:03
1301
原创 阿里云ACK(Serverless)安装APISIX网关及APISIX Ingress Controller
在k8s上安装apisix全家,通过helm安装很简单,但是会遇到一些问题。
2023-11-12 20:40:18
1079
原创 组件和框架的初始化顺序背后可能隐藏着线上故障?
一个微服务可能引入非常多的SDK,例如消息中间件kafka的组件、RPC框架dubbo、定时任务调度平台xxl-job的组件,以及提供web服务的jetty/tomcat等。
2023-10-26 12:19:55
190
原创 代码扫描工具选型调研
代码的健壮性也是保证代码质量的前提,统一的编码规范甚至格式化规范能够为人工review降低代码阅读的难度,从而提升发现问题的概率,也降低分支合并冲突让人抓狂的冲突处理出现。可整合其它工具,例如PMD,如果配置Java使用sonar-pmd-plugin插件,那么sonar-scanner从SonarQube下载的扫描插件就是sonar-pmd-plugin插件。除了合并PR时的代码扫描,开发阶段的代码扫描也很有意义,能够及时纠正编写错误的代码,也应该力推开发同事去使用。可基于公司后端技术栈考虑。
2023-10-22 15:41:33
630
原创 如何实现存量业务的基础设施导入Kubevela+Terraform
由于terraform-controller使用的terraform docker镜像使用的terraform版本太低,import不支持把data也渲染出来,所以需要自己打一个terraform docker镜像。另外,由于高版本import出来的tf,用低版本apply也会有问题,同样需要重新安装terraform-controller addon插件,指定terraform-controller使用我们自己打的terraform docker镜像。
2023-10-21 12:15:48
247
原创 KubeVela跨地域的多集群管理方案
考虑到成本计算的问题,以及业务的加入退出问题,我们在每个区域部署一个代理集群,在代理集群上部署四层代理Nginx,通过四层代理将kubevela发起的kubenetates api请求转发给目标k8s集群。在公司网络规划上只允许一个区域的一个VPC跟另一个区域的一个VPC打通,同区域不同机房的网络都可以打通的网络架构基础上,由于一个区域可能有多个业务,业务的k8s分布在不同云厂商或机房,要让kubevela管理分布在各个地域机房的K8s集群,需要引入代理。
2023-10-13 13:29:19
243
原创 KubeVela自定义工作流步骤以及踩坑经验
由于kubevela以Addon提供安装扩展,因此我们需要用Addon作为自定义工作流步骤的载体,通过Addon安装工作流步骤和升级、卸载工作流步骤。自定义工作流步骤需要使用CUE语言,并且只能使用语言本身支持的操作和kubevela为我们提供的一系列内置操作。假设我们自定义一个工作流步骤是调用一个接口做某件事情,如果接口返回0,就是需要暂停工作流步骤等待人工完成审核,如果接口返回1,就是审核通过需要恢复工作流步骤,如果返回2,就是审核被驳回,需要终止工作流。发送http请求的HTTPDo操作。
2023-10-13 13:25:32
154
原创 一次Go项目进程重启故障问题排查
排查思路:由于容器已经重启过,当前go进程内存消耗还是正常值,不过从监控指标已经看出,内存会缓慢的涨上去,因此我们是先查看当前时间的内存使用情况,记录下来,待一个小时以后,再看一次,对比看哪里的内存是上涨的,然后再追踪内存是从哪里分配的,最后再看代码,看看哪里占用了内存没有释放。
2023-10-12 09:20:00
530
原创 KubeVela可持续测试应用部署之Mock基础设施
方案一的好处是,上层使用上没有任何区别,整条链路上没有任何改动。而方案二会修改application.yaml,且不会跑terrafrom-controller的逻辑,整条链路实际上是不完整的,导致测试覆盖率低,有一些底层的问题无法在测试阶段发现,例如terraform-controller可能存在严重的bug。方案一的缺点也很明显,因为需要mock非常多的接口,而且还需要对混合云提供的terraform provider的代码或者相关接口非常熟悉才可以。学习使用成本太高,效率没有方案二高。
2023-10-12 09:05:56
180
原创 KubeVela篇10:KubeVela 私有云Terraform Provider Addon插件开发指南
从Terraform controller源码ConfigurationReconciler类可以找到,terraform镜像可以从环境变量“TERRAFORM_IMAGE”取,而Terraform controller会打包成helm chart,通过查看helm chart的terraform_controller.yaml文件,发现。。。
2023-07-23 10:59:23
207
原创 KubeVela篇09:KubeVela工作流步骤CUE模版和Go代码是怎么关联的
terraformProvider、multiclusterProvider、oamProvider、configprovider、kube这些provider的Install方法注册了很多操作处理方法。这些方法就是提供给CUE中调用的方法。
2023-07-23 10:58:28
163
原创 KubeVela篇08:一个组件的输出作为另一个组件的输入案例及传递原理
kubevela安装一个Application的过程,就是执行工作流上的每个步骤的过程,并且当我们未配置工作流,kubevela会自动为组件的部署生成一个工作流步骤。工作流可以插入人工卡点,也可以插入一个read-object的工作流步骤,来衔接前后两个工作流,实现数据的传递。而当我们配置工作流后,组件的部署就需要我们编排,kubevela不会再为组件的部署生成任何工作流步骤。工作流的编排可以指定步骤的依赖关系,哪个步骤依赖哪个步骤,被依赖的步骤先执行。
2023-07-23 10:57:33
133
原创 KubeVela篇07:terraform controller实现原理
terraform-controller是一个专门负责terraform一类的组件"安装"的Operator,通过打包成helm,再封装成kubevela的Addon,由kubevela安装到管控集群,为其它terraform provider插件提供模块定义支持。
2023-07-23 10:55:52
301
原创 KubeVela篇06:Kubevela Addon插件安装原理
addon支持从本地、git仓库、helm chart仓库安装,最终原理都相同,因此我们以本地安装为例。
2023-07-23 10:24:42
342
原创 KubeVela篇05:为kubevela开发terraform-mycloud Addon插件
我们需要将mycloud terraform provider包装成kubevela可安装的Addon插件,并且通过提供私有云基础设施资源对应的terraform module,用来生成kubevela中的组件定义,这样我们才能够在application部署描述文件中,通过为应用添加组件的方式,声明使用我们的基础设施资源。
2023-07-23 10:23:32
301
3
原创 KubeVela篇03:了解KubeVela安装一个应用的过程
执行vela up -f application.yaml命令,实际就是将application.yaml apply到k8s中(这里指的是kubevela底座的k8s集群,即管控集群),然后由application_controller监听事件处理application的安装/更新。application_controller中会将应用的部署转为工作流(Workflow),每一步称为一个工作流步骤(WorkflowSteps),安装应用,就是按依赖顺序执行工作流步骤。
2023-07-22 10:30:11
190
原创 KubeVela篇02:初识KubeVela,进一步理解OAM模型
官方文档把模块定义比作乐高积木,非常形象且易于理解:模块定义是组成 KubeVela 平台的基本扩展能力单元,一个模块定义就像乐高积木,它将底层的能力封装成抽象的模块,使得这些能力可以被最终用户快速理解、使用并和其他能力组装、衔接,最终构成一个具有丰富功能的业务应用。
2023-07-22 10:29:22
238
原创 terraform篇03:terraform provider开发避坑指南
上一篇我们以一个简单的vpc资源为例,学习terraform provider的开发全流程,这篇主要介绍实际项目开发中我们可能会遇到的问题。这两篇以快速入门和避坑经验分享为主,推荐阅读官方文档学习更多。
2023-07-15 16:59:28
475
原创 terraform篇01:初识terraform,用代码减少沟通成本
通常申请IaC,我们需要向运维描述我们需要什么IaC、什么规格,运维根据我们的描述去检查是否已经申请过这样的资源,有就会直接给我们使用IaC的信息,没有再帮我们申请,然后告诉我们使用IaC的信息,例如mysql的jdbc和用户名、密码。如果将描述代码化,IaC的申请自动化,就能实现“基础设施即代码”。而terraform就是实现“将描述代码化”的工具软件。
2023-07-15 16:57:46
394
原创 Operator实战4:如何获取已经被删除的pod的日记
一种方案就是添加一个controller(operator),监听terraform job创建的pod,然后给pod添加finalizers,然后监听job的删除,在真正删除之前先获取pod的容器的日记,将日记通过configmap保存下来,或者发送event。
2023-06-27 19:48:28
1151
原创 Operator实战3:Operator开发过程遇到的问题
当我们一个中间件使用多个configmap的时候,每个configmap的挂盘路径是不能一样的,否则后面的会覆盖前面的,另外subPath也是不能用的,这样会导致configmap内容更新的时候,容器里面的配置文件不会更新。
2023-06-03 16:09:35
643
原创 Operator实战2:实现webhook修改Job的最大重试次数
Kubernetes apiserver提供两种特殊的准入控制器,分别是MutatingAdmissionWebhook和ValidatingAdmissionWebhook。这两种准入控制器,将发送准入请求到外部的HTTP回调服务,并接收准入响应。准入控制器就是在对象持久化之前用于对 Kubernetes API Server 的请求进行拦截处理,在请求经过身份验证和授权之后放行通过。Mutating准入控制器可以修改被处理的资源对象,Validating准入控制器则不能修改。
2023-06-03 15:55:13
423
原创 Operator实战1:使用kubebuilder开发一个部署web服务的Operator
虽然API上并没有对如何设计资源的状态做任何约定,包括kubernetes在1.19版本之前提供的内置资源,它们的状态也并不都遵循约定,但状态的设计建议还是遵循官方新提出的约定,可参考这篇《kubernetes设计与实现-API设计约定-condition设计约定:https://renhongcai.gitbook.io/kubernetes/di-shi-liu-zhang-api-she-ji-yue-ding/1.2-api_convention_condition》。
2023-06-03 15:38:52
1041
原创 初识Operator,中间件云原生利器
Operator是什么,为什么中间件云原生需要Operator?中间件云原生改造一定需要Operator吗?
2023-05-27 14:50:54
460
原创 中间件篇:中间件容器化部署实现方案的前期调研
使用PV+PVC方式,实际就是挂载一个远程文件系统/块存储设备,存在网络I/O性能开销,具体性能影响,要看远程文件系统/块存储设备的实现原理,可能会利用本地磁盘暂存+内存缓存减少一些网络I/O的开销,但肯定比不上使用节点本地磁盘。
2023-05-14 18:17:28
869
原创 序篇2:从2023年北京站全球架构师峰会看云原生发展趋势
Serverless、ServiceMesh是2023年全球架构师峰会(北京站)出现频率最高的词,本篇将从这两个方面分享笔者参会了解到的一些信息。参与此次会这后,我更坚信我们云原生项目所走的方向的正确性,以及预测到未来需要解决的难题。
2023-05-14 01:01:11
273
原创 序篇1:云原生企业级实战笔记专栏开篇介绍
在实战的过程中,我自己做了很多笔记,从模糊到清晰,逐渐了解云原生架构,不仅参与了中间件容器化架构改造与自动化部署Operator开发,还参与了IaC基础设施即代码的开发,kubevela terraform Addon插件开发,从应用层到中间件到基础设施都有参与,整条链路的一些核心原理都非常清晰。其实不仅是我,整个团队,包括领导,大家都是0经验,一点点学习摸索,请教一些资深的专家。我将通过专栏的形式,将笔记脱敏,并增加一些内容,形成从0基础入门学习的教程,当然,专栏是收费的,毕竟不是为爱发电。
2023-05-13 12:19:13
466
原创 如何开发一个项目脚手架
创建一个项目通常需要依赖很多的二/三方组件,我们很难记住每个组件的maven坐标,并且有些组件的初始化工作很繁琐,一堆配置项很难记住。如果没有脚手架,每当需要创建一个新的project,我们通常会选择基于现有的project复制一份,然后修改修改。如果是纯粹的只使用spring的三方组件就能创建一个project,那么我们完全可以使用start.spring.io提供脚手...
2022-06-14 21:00:43
1069
原创 这么理解TLS协议,以及TLS协议的握手过程
如今HTTPS已被广泛使用,但作为程序员的我们,真的理解这个'S'了吗?如果还没有,这篇入门级介绍或许能帮到你。在TLS(更早期的版本是SSL)出现之前,很多公司为了保证自家产品客户端与服务端信令交互数据安全,或通过基于TCP协议,自定义支持加解密的二进制应用协议(用于APP),或通过加密HTTP协议请求&响应的Body以确保数据安全。无论哪种,通常都是采用对称加...
2022-05-29 15:02:04
4744
原创 开发也需了解的网络知识,实践验证真理
无论是以前工作需要,还是兴趣爱好,我们大多数人可能都只是研究学习过少数几种网络协议。因公司规模或者说项目的原因,流量远达不到需要我们去关心网络方面问题,又或者没机会去接触。笔者现在参与网络项目的研发,发现自己很多网络知识都不了解,在跨部门沟通时很是被动,需要补一些网络方面的知识。本篇我们一起从一个后端开发者的视角,理解带宽、以及内容分发网络CDN。网络带宽影响应用吞吐量瓶...
2022-05-10 08:30:00
237
原创 Dubbo支持自适应等待无损下线
无损上下线是服务治理不可忽视的问题,在应⽤上下线发布过程中,如果上下线不平滑,就会出现短时间的服务调⽤报错,如连接被拒绝(Connection refused)、请求超时或请求异常。请求超时发生在服务提供者上线时,由于过早暴露服务,请求进来时,可能应用还未初始化完成,如中间件的初始化、IOC容器的初始化。连接被拒绝、请求异常发生在服务下线,如果中间件的销毁早于Dubbo就会出现请求异常;如果请求未写入IO通道就关闭连接,就会导致服务消费者接收IO异常;如果服务消费者感知提供者下线有延迟,就会导致延迟的这段
2022-04-20 11:11:57
2599
1
IPv4-国家-区域-城市-运营商csv格式数据库-附使用java写的使用demo
2023-10-14
2019年毕业设计-一款情侣APP 附论文、作品视频演示、代码
2023-10-13
2019毕业设计作品-一款支持来电拦截的通讯录APP 附论文核心部分、项目代码
2023-10-12
Java堆外内存使用分析详细
2023-10-12
ArchSummit 2023 全球架构师峰会 北京站 PPT(公开)
2023-10-12
用c#实现的读取rtf格式文件的工具类
2016-01-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人