- 博客(81)
- 收藏
- 关注
原创 05-Service详解
NodePort方式的缺点是会占用很多集群机器的端口,那么当集群服务变多的时候,这个缺点就愈发明显LB方式的缺点是每个service需要一个LB,浪费、麻烦,并且需要kubernetes之外设备的支持基于这种现状,kubernetes提供了Ingress资源对象,Ingress只需要一个NodePort或者一个LB就可以满足暴露多个Service的需求。
2022-10-16 08:51:57
622
原创 04-pod调度与pod控制器
自主式pod:kubernetes直接创建出来的Pod,这种pod删除后就没有了,也不会重建控制器创建的pod:kubernetes通过控制器创建的pod,这种pod删除了之后还会自动重建什么是Pod控制器Pod控制器是管理pod的中间层,使用Pod控制器之后,只需要告诉Pod控制器,想要多少个什么样的Pod就可以了,它会创建出满足条件的Pod并确保每一个Pod资源处于用户期望的目标状态。如果Pod资源在运行中出现故障,它会基于指定策略重新编排Pod。
2022-10-16 08:50:42
624
原创 01-k8s基础与集群搭建
s.io/kubernetes,是一个全新的基于容器技术的分布式架构领先方案,是谷歌严格保密十几年的秘密武器----Borg系统的一个开源版本,于2014年9月发布第一个版本,2015年7月发布第一个正式版本。kubernetes的本质是一组服务器集群,它可以在集群的每个节点上运行特定的程序,来对节点中的容器进行管理。自我修复:一旦某一个容器崩溃,能够在1秒中左右迅速启动新的容器弹性伸缩:可以根据需要,自动对集群中正在运行的容器数量进行调整服务发现:服务可以通过自动发现的形式找到它所依赖的服务。
2022-10-16 08:35:11
320
原创 01-深入理解mysql索引底层数据结构
聚簇索引的数据的物理存放顺序与索引顺序是一致的,即:只要索引是相邻的,那么对应的数据一定也是相邻地存放在磁盘上的。聚簇索引的顺序和磁盘中数据的存储顺序是一致的,如果主键不是自增id,那么它会不断地调整数据的物理地址、分页,当然也有其他一些措施来减少这些操作,但却无法彻底避免。但,如果是自增的,那就简单了,它只需要一页一页地写,索引结构相对紧凑,磁盘碎片少,效率也高。举例:如果是自增,则元素都是往b树增长的方向进行增加如果是非自增,比如先插入10,
2022-10-16 08:16:35
289
原创 01-jvm类加载机制
类加载器是如何加载类的呢?双亲委派机制。自定义类加载器只需要继承 java.lang.ClassLoader 类,该类有两个核心方法,一个是 loadClass(String, boolean),实现了双亲委派机制,还有一个方法是findClass,默认实现是空 方法,所以我们自定义类加载器主要是重写findClass方法。
2022-10-16 08:09:09
276
原创 redis缓存击穿、缓存穿透、缓存雪崩解决方案
Redis缓存的使用,极大的提升了应用程序的性能和效率,特别是数据查询方面。但同时,它也带来了一些问题。其中,最要害的问题,就是数据的一致性问题,从严格意义上讲,这个问题无解。如果对数据的一致性要求很高,那么就不能使用缓存。另外的一些典型问题就是,缓存穿透、缓存雪崩和缓存击穿。目前,业界也都有比较流行的解决方案。布隆过滤器是一种数据结构,对所有可能查询的参数以hash形式存储,在控制层先进行校验,不符合则丢弃,从而避免了对底层存储系统的查询压力;
2022-10-15 19:15:49
155
原创 canal的入门与使用
canal [kə’næl],译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费早期阿里巴巴因为杭州和美国双机房部署,存在跨机房同步的业务需求,实现方式主要是基于业务 trigger 获取增量变更。从 2010 年开始,业务逐步尝试数据库日志解析获取增量变更进行同步,由此衍生出了大量的数据库增量订阅和消费业务。基于日志增量订阅和消费的业务包括数据库镜像数据库实时备份索引构建和实时维护(拆分异构索引、倒排索引等)业务 cache 刷新。
2022-10-15 19:10:52
872
原创 spring statemachine状态机在项目中的实践
我们通常所说的状态机是有限状态机,也就是被描述的事物的状态的数量是有限个,例如自动门的状态就是两个 open 和 closed。给定一个状态机,同时给定它的当前状态以及输入,那么输出状态时可以明确的运算出来的。这个想法是你的应用程序可能存在于有限数量的状态中,某些预定义的触发器可以将你的应用程序从一个状态转移到另一个状态。有限状态机(Finite-state machine,FSM),又称有限状态自动机,简称状态机,是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。获取的结果无法感知到。
2022-10-15 17:04:55
2255
原创 短信短链接项目中的实践
短网址(Short URL),顾名思义就是比较短的 URL 网络地址, 在如今 Web 2.0 的时代,短网址十分得流行,在业界已经有许多短网址生成的服务,使我们可以用各位简短的网址来替代原来十分冗长的网址。为了保证不冲突和重复,大多数短网址服务都会采用自增的方式来分发 id,如第一个使用这个服务的人得到的短地址是 http://xxx/0 ,第11个是 http://xxx/a 等依次生成。我们在新浪微博上发布的内容包含长链接网址的时候,微博服务会自动判别出长链接网址,并将其转换为短链接网址。
2022-10-03 18:03:00
1612
原创 模板方法模式
1、概述在面向对象程序设计过程中,程序员常常会遇到这种情况:设计一个系统时知道了算法所需的关键步骤,而且确定了这些步骤的执行顺序,但某些步骤的具体实现还未知,或者说某些步骤的实现与具体的环境相关。例如,去银行办理业务一般要经过以下4个流程:取号、排队、办理具体业务、对银行工作人员进行评分等,其中取号、排队和对银行工作人员进行评分的业务对每个客户是一样的,可以在父类中实现,但是办理具体业务却因人而异,它可能是存款、取款或者转账等,可以延迟到子类中实现。2、定义定义一个操作中算法的框架,而将一些步骤延迟
2021-09-27 21:46:07
142
原创 设计模式-策略模式与spring集成实战
1、概述在软件开发中,我们也常常会遇到类似的情况,实现某一个功能有多条途径,每一条途径对应一种算法,此时我们可以使用一种设计模式来实现灵活地选择解决途径,也能够方便地增加新的解决途径。譬如商场购物场景中,有些商品按原价卖,商场可能为了促销而推出优惠活动,有些商品打九折,有些打八折,有些则是返现10元等。而优惠活动并不影响结算之外的其他过程,只是在结算的时候需要根据优惠方案结算在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。策略对象改变 context
2021-09-26 23:20:58
835
2
原创 观察者模式
2021-05-13 10:011、概述观察者模式是软件设计模式的一种。在此种模式中,一个目标对象管理所有相依于它的观察者对象,并且在它本身的状态改变时主动发出通知。这通常通过呼叫各观察者所提供的方法来实现。此种模式通常被用来实时事件处理系统。2、定义又被称为发布-订阅(Publish/Subscribe)模式,它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态变化时,会通知所有的观察者对象,使他们能够自动更新自己。3、结构在观察者模式中有如下角色:
2021-09-26 23:13:51
150
原创 微服务网关zuul
zuul解决问题:不同的微服务一般会有不同的网络地址,客户端在访问这些微服务时必须记住几十甚至几百个地址,这对于客户端方来说太复杂也难以维护。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-neRUtMiV-1613658706664)(…/image/image-20200813101956296.png)]如果让客户端直接与各个微服务通讯,可能会有很多问题:客户端会请求多个不同的服务,需要维护不同的请求地址,增加开发难度在某些场景下存在跨域请求的问题加大身份认
2021-02-18 22:32:49
396
1
原创 ribbon负载均衡
ribbon一、简介Ribbon是Netflix发布的云中间层服务开源项目,其主要功能是提供客户端实现负载均衡算法。Ribbon客户端组件提供一系列完善的配置项如连接超时,重试等。简单的说,Ribbon是一个客户端负载均衡器,我们可以在配置文件中Load Balancer后面的所有机器,Ribbon会自动的帮助你基于某种规则(如简单轮询,随机连接等)去连接这些机器,我们也很容易使用Ribbon实现自定义的负载均衡算法。二、客户端负载均衡和服务端负载均衡服务端负载均衡例如:Nginx,通过Ngi
2021-02-18 22:31:29
2286
2
原创 hystrix服务容错
hystrix解决问题:在微服务架构中多层服务之间会相互调用,如果其中有一层服务故障了,可能会导致一层服务或者多层服务故障,从而导致整个系统故障。这种现象被称为服务雪崩效应。一、 Hystrix断路器简介Hystrix是一个实现了超时机制和断路器模式的工具类库。Hystrix是有Netflix开源的一个延迟和容错库,用于隔离访问远程系统、服务或第三方库,防止级联失败,从而提升系统的可用性和容错性。1、hystrix 容错机制1.1 包裹请求:使用HystrixCommand包裹对依赖的调用
2021-02-18 22:30:09
439
原创 springcloud gateway网关
gateway 网关背景:在微服务架构中,一个微服务会拆分为多个微服务,客户端如何调用微服务呢?只能在客户端记录微服务的地址进行调用。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4EjlQwjI-1613658517324)(…/image/image-20201005115209547.png)]存在的问题:客户端多次请求不同的微服务,增加客户端代码或配置编写的复杂性认证复杂,每个服务都需要独立认证。存在跨域请求,在一定场景下处理相对复杂。解决方案:ap
2021-02-18 22:29:06
513
1
原创 springcloud feign服务调用
feign/openFeign解决问题:解决集群时,接口地址的管理,以及如何进行负载均衡。一、简介feigin是一种模板化,声明式的http客户端,feign可以通过注解绑定到接口上来简化Http请求访问。当然我们也可以在创建Feign对象时定制自定义解码器(xml或者json等格式解析)和错误处理。二、快速入门feign底层是使用了ribbon作为负载均衡的客户端,而ribbon的负载均衡也是依赖于eureka 获得各个服务的地址。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直
2021-02-18 22:27:56
181
原创 springcloud config配置中心
spring cloud config解决问题:1、项目微服务化,配置文件很多,特别是集群之后,如果改了之后,需要改多处2、修改了配置之后,必须重启服务,否则配置无法生效,无法及时更新。一、简介什么是配置中心对于传统的单体应用而言,常使用配置文件来管理所有配置,比如SpringBoot的application.yml文件,但是在微服务架构中全部手动修改的话很麻烦而且不易维护。微服务的配置管理一般有以下需求:1、集中配置管理,一个微服务架构中可能有成百上千个微服务,所以集中配置管理是很重要的。
2021-02-18 22:26:47
221
原创 eureka注册中心
eureka 注册中心解决问题:服务之间的调用关系:维护服务的地址,如果有集群,服务如何维护?一、简介 Spring Cloud Eureka,使用Netflix Eureka 来实现服务的注册与发现, 他既包含了服务端组件,也包含了客户端组件,并且服务端与客户端均采用Java编写,所以Eureka主要适用于通过Java编写的分布式系统,或是与JVM兼容语言构建的系统。 Eureka服务端,我们也称为服务注册中心,它同其他服务注册中心一样,支持高可用配置。它依托于强一致性提供良好的服务实例可
2021-02-18 22:25:59
131
原创 mybatis-plus学习
mybatis-plus一、简介官网:https://mp.baomidou.com/[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-155EWNFK-1613658092306)(…/image/image-20200719110124543.png)]MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。特性无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝
2021-02-18 22:22:50
462
原创 gitee + picGo作为免费图床
gitee + picGo作为免费图床下载及软件安装准备1)PicGo-Setup-2.2.2.exe2)typora0.9.863)gitee注册账号使用设置1)gitee设置注册gitee账号,有则略过。创建图床仓库:2)picGoGitee图床设置安装完成之后,设置gitee图床,即设置gitee相关信息token可以从gitee获取picGo设置代理...
2020-05-04 17:13:32
404
原创 spring aop拦截指定方法和自定义注解
1、使用aop需要加入maven依赖 <!--与aop相关--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifac...
2020-03-29 22:09:42
14817
7
原创 spring声明式事务和编程式事务
spring声明式事务和编程式事务spring事务:只对本地事务有效。1)声明式事务:添加注解@Transactional即可@Target({ElementType.METHOD, ElementType.TYPE})@Retention(RetentionPolicy.RUNTIME)@Inherited@Documentedpublic @interface Transacti...
2020-03-29 20:10:14
378
原创 方法幂等性控制
方法幂等性控制 幂等 HTTP/1.1中对幂等性的定义是:一次和多次请求某一个资源对于资源本身应该具有同样的结果(网络超时等问题除外)。也就是说,其任意多次执行对资源本身所产生的影响均与一次执行的影响相同。 幂等不仅仅只是一次(或多次)请求对资源没有副作用(比如查询数据库操作,没有增删改,因此没有对数据库有任何影响)。幂等还包括第一次请求的时候对资源产生了副作用,但是以...
2020-03-29 15:37:50
1254
原创 springboot创建自定义starter
springboot如何创建starter?1、引入maven依赖 <?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instan...
2020-03-29 15:29:45
914
原创 docker的学习
1、查看docker版本docker -v2、设置镜像地址 ustc地址3、docker启动和关闭systemctl start dockersystemctl stop dockersystemctl restart dockersystemctl status dockersystemctl enable docker 开机启动systemctl i...
2020-03-27 21:29:46
235
原创 eclipse 操作svn
1、在svn中新建仓库 zengqingfa032、设置忽略文件3、打开视图svn4、新建资源库位置5、新建6、将项目上传下一步:7、直接提交 commit,注意:选择只提交自己更改过的文件8、注意仓库资源目录9、创建分支资源位置:分支:分支日志:仓库:...
2020-03-27 21:18:48
242
原创 idea 操作svn
1、开启版本控制颜色变化:2、共享到仓库3、资源库位置注意颜色变化:4、仓库:此时没有代码:6、提交:提交成功:7、可以设置忽略文件:代码修改后直接提交:修改后直接提交:8、创建分支直接创建:名字new_branch有问题,重新建立分支:仓库:9...
2020-03-27 21:13:53
558
原创 命令行操作git
git init 初始化一个仓库git status 查看状态刚创建为未追踪的状态2.git add . 提交到暂存区, . 表示为全部的文件3.git status查看状态4.git commit -m "提交日志" 提交到本地仓库5. git remote add origin 仓库地址 配置远程仓库地址6.git remote 查看当前远程...
2020-03-27 20:54:20
185
原创 idea操作git
设置远程仓库的地址设置url:创建本地仓库 设置忽略文件添加到暂存区提交项目到本地仓库推送到远程仓库先在github上创建一个新的仓库checkout检出项目输入账号密码:clone克隆:检出代码如下:新增代码提交并推送到远程仓库:成功:...
2020-03-27 20:45:52
110
原创 java注解
注解用于java代码提供元数据。作为元数据,注解不直接影响你的代码执行,但也有一些类型的注解实际上可以用于这一目的。Java 注解是从 Java5 开始添加到 Java 的。注解是一系列元数据,它提供数据用来解释程序代码,但是注解并非是所解释的代码本身的一部分。注解对于代码的运行效果没有直接影响。注解有许多用处,主要如下:提供信息给编译器: 编译器可以利用注解来探测错误和警告信息编译阶段...
2020-03-27 20:11:58
191
原创 java反射
2020-03-08 19:31反射jav反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。反射相关的类类名 用途Class类 代表类的实体,在运行的Java应用程序中表示类和接口Field类 ...
2020-03-27 20:01:41
158
原创 java8的新特性
java8之后,还可以定义静态方法,默认方法,所有接口的实现类都能调用方法java7及以前,接口只能定义全局常量和抽象方法全局常量:public staitc final,可以省略不写抽象方法:public abstract package com.example.demo; public interface InterfaceDemo { ...
2020-03-27 19:55:53
258
原创 jmeter性能测试入门
Apache JMeter是一款纯java编写负载功能测试和性能测试开源工具软件。 官网:https://jmeter.apache.org/使用:下载安装 启动步骤添加线程组配置线程组的参数:线程组参数详解:1. 线程数:虚拟用户数。一个虚拟用户占用一个进程或线程。设置多少虚拟用户数在这里也就是设置多少个线程数。2. Ramp-Up Period(in...
2020-03-26 20:00:13
200
原创 springboot项目-多线程查询示例
对于多线程,使用到项目的场景并不是多,但是多线程查询算是一个。以多线程查询人员列表为例:pom.xml文件:maven依赖 <?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3...
2019-09-09 23:59:36
5957
2
原创 SSH整合
SSH项目整合一、maven工程pom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:sch...
2019-07-24 23:01:47
101
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅