自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(97)
  • 收藏
  • 关注

原创 研发流程——准入体系设计

在进行变更之后,我们开发完成就会进入发布的环节,但我们的发布流程或者发布系统会对我们本身的代码做一个检查,通常我们要实现一个需求或者把问题修复的时候,我们会建立一次变更,然后进行一些研发的测试,但当我们代码写完了,测试也测完了的时候,我们的诉求肯定是想要发布,但是在发布时,我们就需要考虑当前的代码是否可能会对未来产生影响,这里不仅仅是功能层面,还会有很多功能层面没有考虑到的地方。它可能牵扯到更细节的地方,也可能牵扯一些我们没有注意的地方。

2022-09-30 00:21:23 699 1

原创 研发流程——变更流程管控

狭义:根据需求、问题修复而创建的研发、联调、上线并引起线上变化的过程。广义:对实际线上系统的任何变动、操作。

2022-09-27 23:41:46 1462

原创 架构质量工程——异常管控

异常通常都会有专门的日志库打印相关的异常,但是有很多同学也会习惯性的在代码中直接打印到控制台里,这种并不是一个好的行为。

2022-09-26 13:23:45 537

原创 什么是 DeFi(去中心化金融)?

什么是 DeFi?Defi是自己掌握私钥,以数字货币为主体的金融业务。首先,DeFi是加密金融体系的一种模式。按照是否涉及加密资产,可以将金融体系区分为传统金融体系(不涉及加密资产)和加密金融体系。其中,按照是否要依托中心化的金融机构或者交易场所,可以将加密金融体系划分为DeFi(不依托)和CeFi(中心化金融)(详见附表)。其次,DeFi的核心在于“去中心化”。DeFi通过运用加密货币和智能合约在区块链上提供交易、借贷和投资等金融服务,但不依托于任何中心化的金融机构、中介或交易场所。换言之,D

2022-05-29 17:13:30 6354

原创 声网服务端接入指南

鉴权原理客户端主动向服务的申请 Token客户端调用服务端接口,获取频道列表。如:语聊房列表、直播列表…服务端返回客户端 Token,然后携带 Token、用户Id、频道名等信息调用 SDK 加入频道。声网向 SD-RTN 根据客户端传来的 Token 校验合法性。成功加入频道,并返回客户端 UID。语聊房开发流程。用户创建语聊房时,客户端调用服务端接口,存储语聊房信息(如背景图、名称、chanlName…)当用户进入语聊房列表展示页时,客户端调用列表接口,返回 ChanlList。

2022-05-21 01:13:55 831

原创 「群组」和「聊天室」有什么区别?

什么是群组?群组是支持多人沟通的即时通讯系统,成员关系相对稳定。所有群成员可以收到群中的消息,可以在群中发送消息。群成员离线时可以收到推送消息。群组分为公开群和私有群,公开群可以被搜索到,非群成员可以加入;私有群不能搜索到,需要群主或群管理员添加非群成员进入。群组成员支持多种角色:群主、群管理员和普通成员。群组提供丰富的管理能力,如群组禁言、群公告和群文件等。什么是聊天室?聊天室是支持多人加入的类似 Twitch 的组织。聊天室中的成员没有固定关系,用户离线后,超过 5 分钟会自动退出聊天室。聊

2022-05-21 00:58:12 2159

原创 Mysql 循环插入测试数据 SQL

DROP PROCEDUREIF EXISTS test_data; DELIMITER $$CREATE PROCEDURE test_data() BEGIN -- 定义变量 DECLARE i INT UNSIGNED DEFAULT 1; -- 1是变量可以写10000 -- 循环次数 WHILE i <= 100 DO -- i是变量可以 <10000 insert into kt_circle(name,avata

2022-05-21 00:50:59 528

原创 DevOps知识图谱

DevOps知识图谱出自:https://roadmap.sh/devops

2022-03-02 11:06:08 1041

原创 DevOps文化建设——敏捷开发Scrum

敏捷开发框架-Scrum目前业界有非常多的敏捷开发框架可供选择,这些开发框架提供了非常详细的敏捷指导比如:XP,极限编程Crystal Methods,水晶方法FDD,特性驱动开发ASD,自适应软件开发…目前业界最流行的敏捷开发框架是Scrum。Scrum是什么?它是一个迭代式增量软件开发过程在Scrum里比较重要的是Sprint。在Scrum里面可以认为Sprint是一个项目的迭代。一个Sprint长度一般是2-4周,固定,不允许延长或缩短。在Scrum里面包括:三

2022-03-02 11:03:28 1603

原创 Mysql调优大全梳理(涵盖90%需要调优的场景)

前言学习这个文章需要具备一定的理论基础,不妨先来看一下我这篇文章《一文道尽数据库底层原理,探讨Mysql调优之道》1.Join语句优化Join语句相关算法算法1:Nested-Loop Join(NLJ)这种算法称为“嵌套循环Join”,大致是这样玩的:TableJoin Typet1ranget2reft3Allfor each row in t1 matching range{ for each row in t2 matching refere

2022-02-20 18:39:12 7262 8

原创 大流量下系统重启失败总结

产生原因RDS bookdb.cosplayindex 表结构,因为表数据过大,导致RDS负载过高,应用层全部挂掉。操作流程第一次操作:重启所有web-book/web-function , 结果: 无法成功重启第二次操作:关闭SLB,重启web-book/web-function,再打开SLB. 结果: web-book成功,web-function重复失败. 查看日志, service-common 服务调用超时第三次操作:关闭SLB,重启 web-function , 重启 servi

2022-02-17 10:32:29 267

原创 Kafka命令合集

https://shirenchuang.blog.csdn.net/article/details/118215928?spm=1001.2014.3001.5502

2022-02-08 11:00:08 662

原创 分布式事务的四种解决方案

https://www.cnblogs.com/mayundalao/p/11798502.html

2022-02-08 10:38:28 341

原创 2022年学习安排

上半年(1月-6月)掌握Flutter高级特性学习Lua,掌握Openresty高级特性。掌握分布式事务Steata掌握Zookeeper掌握Dubbo原理,搞懂Rpc实现思路。下半年(7月-12月)复习Mysql锁,事务,调优。复习JVM,调优。使用Flutter+SpringBoot+Mysql,独立开发App(自己设计)掌握MoongoDB学习工作流引擎Activity7掌握ELK...

2022-01-27 12:32:47 3531

原创 Flutter2空安全,避免App空值崩溃问题

什么是空安全从Flutter2开始,Flutter在配置中默认启用空安全,通过空检查合并到类型系统中,可以在开发过程中捕获这些错误,防止生产环境导致的崩溃问题。目前在Kotlin、Swift、Rust等对空安全都有了对自己的支持,Dart从2.12版本开始支持空安全,通过空安全开发人员可以有效避免null错误崩溃,空安全性可以说是Dart语言的重要补充,它通过区分类型和非可空类型进一步增强类型系统。空安全好处可以将原本运行时空值变为编辑时的分析错误。增强程序健壮性,有效避免由Null导致的崩溃。

2022-01-24 16:50:18 448 2

原创 Mac M1芯片Xcode搭建RN项目踩坑小记

pod兼容性问题m1芯片的同学搭建RN项目的时候一定要注意,ios 安装pod千万不要用pod install而用arch -x86_64 pod install,不然你会遇到各种坑。Dependency Analysis Error用Xcode构建过程中报错:解决办法:找到对应的Project,进行以下设置:然后再次重新Build.xxx file not found解决办法:确保该引用模块已经安装,查找node_modules。在Header Search Paths里设

2022-01-20 14:30:33 2453 1

原创 K8S部署Skywalking

步骤下载aop镜像https://hub.docker.com/r/apache/skywalking-oap-server下载ui镜像https://hub.docker.com/r/apache/skywalking-uiOAP部署service:apiVersion: v1kind: Servicemetadata: name: oap namespace: skywalking-test labels: service: oapspec: ports:

2022-01-17 12:20:56 1978 1

原创 docker安装ElasticSearch7

Docker 部署ES7.6.21.下载镜像docker pull elasticsearch:7.6.22.创建持久化目录mkdir -p /home/weichenglong/workspace/elasticsearchcd /home/weichenglong/workspace/elasticsearchmkdir datamkdir logs3.运行容器节点探测类型(discovery.type)设置为 single-node 表示不开启集群模式。docker run -

2022-01-17 12:04:42 2835

原创 HttpRequestMethodNotSupportedException: Request method ‘GET‘ not supported

Controller里加的是@PostMapping。发生了一个很奇怪的现象。明明发送的是POST请求,错误日志里却打印了不支持GET请求方式。解决方法:先定位Nginx,是不是重定向的问题,配置的是https,却用的是http调用的。就极有可能报这种错误。...

2022-01-15 15:57:25 1316

原创 【死磕DDD】聊聊领域建模方法论

领域建模方法论企业架构法CBM 组件化业务模型面向服务架构设计SOA面向服务架构模型用例分析法四色建模法Event Storming事件风暴企业架构法CBM 组件化业务模型图中纵着的一个个其实就是子域和界限上下文,横着的可能是一些策略层、控制层和执行层,里面又有一项一项的内容,这些内容在我们领域设计里面可以对应到一个个聚合,那就有了很多聚合也有了很多子系统。如果说聚合太细了,我们不可能写的那么细,那你也许就是一个个的微服务、一个个模块。面向服务架构设计SOA面向服务架构模型SOA是一切以总

2022-01-02 16:53:02 3986

原创 【死磕DDD】领域驱动架构设计核心概念

为什么领域驱动那么火?它解决了架构师的一个通用问题:Do the RIGHT thing RIGHT!领域驱动架构设计就是以客户和产品为导向,进行业务拆分的一套架构设计思路。领域设计4层模型它和我们平时的三层模型有点类似,但也有些不同。第一层:展现和接口层提供一些API或者图形化界面,或者对外提供了一些封装的接口。第二层:应用层传统的应用层既负责逻辑也负责一些命令、任务调度、编排策略等等。而这里的应用层只负责编排 消息 和命令,逻辑下放到第三层。第三层:领域层(领域模型)领域设计里所

2021-12-31 22:24:17 3500 1

原创 Kafka高性能核心——pageCache与zeroCopy

PageCache与ZeroCopyPageCache即页面缓存,它是操作系统实现的一种主要的磁盘缓存,它的目的就是减少对磁盘IO的操作。具体来说,就是把磁盘中的数据缓存到内存里,然后把对磁盘的访问变成对内存的访问。目前很多一些主流的框架或者架构设计,为了弥补性能上的差异,基本上都是用“磁盘”做缓存的,也就是说可以把所有内存当做磁盘用。相信很多做过高并发项目的一些小伙伴们都会知道,我们一开始最早期可能会读关系型数据库,关系型数据库一旦压力大了,大家可能就会想到的策略是分库分表,分库分表也可能不满足我

2021-12-15 23:18:58 3258

原创 Netty编解码技术之Marshalling

Marshaling首先我这里准备了一张图,通过Marshalling模拟客户端像服务端发送数据包的过程。(该图是随便找的,图片内容与本文探讨的内容无关)1.添加依赖<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <versio

2021-12-10 00:38:36 984

原创 TCP拆包粘包问题探究

什么是拆包粘包?TCP底层有一个拆包/粘包的机制,TCP本质上是一种流协议,所谓流就是说它是没有界限的。TCP底层它并不了解你上层业务具体的含义,也不了解多少个字节或者多少数据包,所以它只能根据TCP缓冲区的实际情况,对数据包进行划分。因此在业务上,数据包可能被TCP当做多个包来发送,也可能把很多小的数据包合成一个大的数据包发出去,这就是TCP拆包与粘包的问题。TCP拆包、粘包问题的产生原因:应用程序write写入的字节大小大于套接口发送缓冲区的大小进行MSS大小的TCP分段、以太网帧的pay

2021-12-09 22:25:13 1545

原创 架构师十项能力,对标阿里P8晋升要求,学习内容梳理

架构核心能力导论数据流架构风格调用返回架构风格ABSD方法论DSSA领域设计AT方法论技术架构路线图规划架构设计维度边界内聚耦合扩展性核心方法论应用扩展、数据扩展组织可扩展性、流程可扩展性高性能实现方案——缓存、异步、分布式割地赔款妥协方案本地高可用方案——集群、分布式、数据逻辑保护异地容灾——双活、两地三中心、DRP规划、业务连续性多活和妥协方案高可用流程安全性维度——流程安全性、架构安全性弹性伸缩维度——阿里云Knative弹性伸缩、有状态/无状态应用弹性伸缩

2021-12-04 12:34:25 2546

原创 【运维核心基本功】洞悉全局,聊聊Kubernetes整体架构与功能介绍

Kubernetes 集群架构上图,就是Kubernetes整个集群的一张图,Kubernetes集群就是掌握了所有Kubernetes里面计算、存储、网络资源,并且进行统一管理、统筹调度的一套节点群。在集群里面有两大类型的节点,Kubernetes第一大类型的节点叫做Kubernetes Master,它是一个主脑节点,还有很多的节点,我们称为Node。其中Kubernetes Master里面又有很多Component,API Server、Replication Controller。在No

2021-12-03 21:09:52 514

原创 什么是身份安全?

什么是身份安全?本文我们重点探讨认证、授权和访问控制。它是企业数字化的基石。如果一个传统企业想上云,那第一件事是什么?是搭建一个Sass平台?Iaas平台?Pass平台?弄一个很酷的网格服务?NONONO!都不是,而是需要先把一些人员信息同步到云上,同步到云上一些用户认证信息,然后大家都可以有不同的授权,就可以各司其职、各干其事,然后进而才能开展数字化的转型以及系统的搬迁,开始搭建那些云平台的服务,开始把应用真正搬迁上云,所以不管是数字化转型的第一步,还是上云或者下云,所有那些动作的第一件事情,就是

2021-12-03 14:29:43 3265

原创 运维基本功——容器间网络访问与通信管理

容器网络Docker原生网络默认网络none网络host网络bridge网络自定义网络自定义bridge网络自定义overlay网络自定义macvlan网络第三方网络flanel网络weave网络calico网络默认none网络这种网络模式的意思是容器启动后,不需要和外部沟通,既不需要外部入侵,也不访问外部的资源。上图中,我们可以看到一共两个虚拟机,每个虚拟机里面运行着两个容器,外部的资源是不可以访问容器的,如果想要访问容器,那么就需要用docke

2021-12-02 16:49:39 1243

原创 深入理解容器技术——聊聊服务容器化三大助力

服务容器化三大助力我们都知道,微服务的落地有众多需求,容器化技术是它的不二之选,容器化通过三大助力来实现了微服务落地的众多需求:码头林立——各种软硬件平台层出不穷容器化解决方案具有一个普适性,它适用于各种不同的软硬件平台。微服务——高内聚、低耦合、分钟启停和部署这一点体现的就是容器化的微小型,能做到分钟级的启停和部署康威定律——组织决定上层建筑容器化技术是一个比较抽象的技术,它剥离了很多运维的工作量,更适合我们当前比较热点的DevOps,更适合于我们互联网架构在康威定律下做的一些企业的变化,

2021-11-30 22:25:42 1278

原创 【玩转Kafka】海量日志收集实战之架构介绍与日志输出

海量日志收集实战话不多说,看架构图:最左侧,是Beats,它主要是用于收集日志的,比如这个Filebeat它的底层是用erlang语言写的,性能非常好,其实我们的系统中打印出来的日志,都会用这个Filebeat给我们抓取出来。在我们这个架构中,Filebeat的主要作用就是把我们的日志搜集出来并转储到Kafka。然后看Kafka的右边,是Logstash,它主要是用日志做一个过滤,然后它会把你过滤后的数据发送到Elasticsearch里。最后利用Kibana进行展示。接下来,我们就来说一下我

2021-11-27 00:23:18 2245

原创 手把手搭建Skywalking,玩转分布式链路追踪

什么是SkywalkingSkywalking是一个适用于分布式系统的性能监控工具文档地址:https://skyapm.github.io/document-cn-translation-of-skywalking/功能:服务,服务实例,端点指标分析根本原因分析服务拓扑图分析服务,服务实例和端点依赖性分析检测到慢速服务和端点性能优化分布式跟踪和上下文传播数据库访问指标告警安装单机版Skywalking下载前往https://archive.apache.org/di

2021-11-24 23:31:02 2559 2

原创 SpringCloud之服务容错——Hystrix

前言在了解这部分内容之前,先问大家几个问题,你是否总听到在周围互联网工作的小伙伴们一口一个降级啊、熔断啊,听到是什么感受呢?想插嘴,却不知道该说些什么;想说些什么,却又怕说错了被人笑话。降级和熔断听起来好像挺高大上的呀,他们究竟能应用到哪些应用场景中来呢?什么样的应用场景才能用到降级和熔断呢?我这小作坊一亩三分地的业务也需要降级和熔断么?它离我们的真实业务到底有多远?带着这些问题我们就拉开SpringCloud服务容错——Hystrix的序幕。服务容错——Hystrix没错,它又是Netflix

2021-11-23 23:47:51 568 1

原创 2021年12月学习计划

学习技术不仅要知其然还要知其所以然容器技术Dockerdocker知识巩固 ——12-01docker整体架构学习——12-01dockerFile学习——12-02容器间网络访问与通信管理12-03容器技术Cloud FoundryCloud Foundry快速入门 ——12-03Cloud Foundry整体架构学习—— 12-04容器和应用生命周期管理学习——12-05容器路由与访问控制学习——12-06蓝绿发布学习——12-07数据服务管理——12-08了解数据持久

2021-11-23 12:19:03 1782

原创 彻底搞懂Feign——EnableFeignClient底层机制探究

EnableFeignClient源码探究话不多说直接开干!点进@EnableFeignClient这个注解里:里面较为核心的是这个FeignClientRegistrar,我们点进去:我们发现它实现了ImportBeanDefinitionRegistrar、ResourceLoaderAware、EnvironmentAware这三个接口,这里关于后面连个Aware接口就不做过多介绍了,熟悉Spring的同学应该都知道吧,我们就看一下这个ImportBeanDefinitionRegistr

2021-11-22 22:43:11 1641

原创 打破理解误区,聊聊什么才是真正的云原生?

云原生应用在我们的互联网应用当中,有一个词想必大家都很熟悉,叫做云原生,或者云原生应用。那什么才是云原生呢?在云原生概念中,有一个叫做云原生15原则,这15个原则我们可以分成四类:CICD弹性解耦中台CICD是和软件发布相关,弹性是和应用的特性相关,解耦是应用与应用之间的关系,最后一个中台是对外服务的形式。只有说满足了15原则,我们才能说是一个很好的云原生应用了。这里我们为什么来通过这个15原则来聊云原生呢?很多人盲目上云,不是所有的应用都适合云,也不是所有应用都能叫云原生。很多

2021-11-21 22:53:12 565

原创 SpringCloud之远程调用Feign

创建Feign的消费者实例创建项目,引入依赖借助动态代理接口实现远程调用比较Eureka,Ribbon和Feign的调用方式。首先我们先创建一个ribbon-consumer的模块,并添加依赖: <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>s

2021-11-21 20:36:36 461

原创 硬钢Spring源码——五万字梳理完Spring核心原理

Spring源码解读前言Spring核心接口和类Bean与BeanDefinitionSpring的一等公民——BeanBeanDefinition ——Bean的定义BeanDefinition源码探究SpringIoc容器BeanFactoryBeanFactory和FactoryBean 的区别BeanFactory架构体系ListableBeanFactoryAutowireCapableBeanFactoryDefaultListableBeanFactoryApplicationContextA

2021-11-21 00:41:08 691

原创 Ribbon最终实战——打造自定义一致性哈希负载均衡策略

自定义IRule本文,我们通过IRule接口,实现一个自定义的负载均衡策略——一致性哈希。关于一致性哈希原理不是本文探讨的重点,如果不了解的同学可以看下这篇文章《一致性哈希算法的原理与实现》,写的还是挺不错的。一致性哈希不仅在负载均衡的领域,在很多其他的领域都有广泛的应用。我们废话不多说,直接开干!首先我们在ribbon-consumer的模块下,创建一个类并继承AbstractLoadBalancerRule和实现IRule接口:然后从上下文中获取HttpServletRequest对象:

2021-11-19 21:52:51 858

原创 彻底搞懂Ribbon——IPing机制源码解析

IPing机制我们废话不多说,直接看源码:这里只有一个isAlive,它会传入一个Ribbon选出来的Server,看看是不是挂了。我们看一下它的实现类:可以看到它的实现类还是蛮多,我们就先看一下这个DummyPing:这个直接返回true。。。那算了,就不要看它了,再看看其他的,我们就看一下PingUrl这个类吧:这个类还是有点东西的。这里小编就不debug走了,很多时候我们就是一个肉眼编译器,在很多互联网公司,代码提交链错综复杂,所以说很多时候项目比较忙的时候,代码交叉在一块,你都

2021-11-18 23:51:04 609

原创 彻底搞懂Ribbon——负载均衡策略源码探究

Ribbon负载均衡策略源码解析RandomRuleRoundRobinRuleBestAvailableRuleRetryRuleRandomRule我们先来看一下这个随机策略的源码:这个choose是它的核心方法。public Server choose(ILoadBalancer lb, Object key) { // 如果传入的LoadBalancer是空,直接返回null if (lb == null) { return null;

2021-11-18 00:06:23 583

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除