自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

varnson-学海无涯

个人技术方面的记录

  • 博客(20)
  • 资源 (2)
  • 收藏
  • 关注

原创 微服务架构的演进

而业务逻辑,只需要API层和ViewObject(展示给用户的视图,即API的输入和输出)、领域逻辑层或应用逻辑层(专注于领域的微服务只需要领域逻辑层,而专注于应用的微服务只需要应用逻辑层)、以及数据库层。需要注意的是,DDD和六边形架构的出现,都是早于微服务的,过去二十年开源软件的蓬勃发展,也提供了很多的开源组件以简化DDD和六边形架构所要求的一些功能。采用如上结构,可以极大简化微服务内部架构,降低开发门槛,提升开发效率,且充分利用开源已有的能力,满足DDD和六边形架构的基本要求。

2023-06-17 20:36:29 82 1

原创 SpringBoot内嵌Tomcat的坑

众所周知,SpringCloud集成的Feign通过使用ApacheHttpClient,是可以支持长连接的。但是我们测试却发现,长连接会被频繁的关闭。调查发现,关闭连接是tomcat主动发起的,也就是说,ApacheHttpClient发起了长连接,但是Tomcat却把它关闭了。Tomcat关闭长连接的条件有2个:单个连接的空闲时间超过60秒单个连接处理的请求数量超过100个至少在SpringCloud H版,官方并没有提供参数来修改这两个值,所以只能自己想办法。幸好SpringCloud

2020-07-11 22:03:26 1545

原创 SpringCloud的自定义参数

基于SpringCloud开发框架时,有时候需要添加一些默认参数。有2种方式可以实现。PropertySourceLocator接口。import org.springframework.cloud.bootstrap.config.PropertySourceLocator;public class MyPropertySourceLocator implements Propert...

2020-02-14 20:00:52 268

原创 Consul以服务方式运行的脚本

consul以服务方式运行,可以达到开机自启动和故障自动重启,减轻运维负担。### BEGIN INIT INFO## Provides: Varnson## Short-Description: Consul agent## Description: Consul service discovery framework## PATH: ...

2020-01-18 22:59:54 846

原创 SpringCloud F版的loadbalance熔断

近期在压力测试过程中,频繁发生【无可用服务】的错误。这个是loadbalance在找不到可用服务时的错误。但是,注册中心监控并没有发现原有的服务突然丢失。通过日志分析,发现大部分情况下该错误的持续时间都是30秒;而且发生该错误前,会出现feign的read timeout错误。于是开始怀疑feign的read timeout导致了lb的无可用服务。经过源码分析,发现还真的有这样的功能。主要的类...

2019-10-12 22:32:51 418

原创 consul-esm原理介绍

esm的作用请参考上一篇文章。1,通过esm的服务名和tag查询esm服务实例。2,根据esm配置里的node-meta,用catalog/nodes接口查询nodes。3,leader把nodes平均分配给esm实例,记录到KV。4,每个esm实例查询KV获取自己的nodes,然后查询health-check,把属于自己nodes的列入监控列表。5,监控自己的服务。从代码逻辑分析,l...

2019-07-31 22:06:35 487

原创 consul-esm介绍

https://github.com/hashicorp/consul-esmconsul-esm是官方提供的一个程序,配合consul,可以让consul从service-mesh模式转变为服务模式。具体而言,consul的官方推荐模式,是service-mesh模式,即任意一个微服务所在的机器上,都安装一个consul agent。缺点是,agent部署工作量大。那么,如果agent集中...

2019-07-09 22:07:46 536

转载 Consul的DNS缓存

本文内容来自consul官方文档,为了避免以后找不到,故备份一下。https://learn.hashicorp.com/consul/security-networking/dns-cachinghttps://www.consul.io/docs/agent/options.html#dns_use_cache主要内容:Stale ReadsStale reads can be us...

2019-07-02 21:02:20 755

原创 actuator的自定义权限控制

因公司安全需求,springboot自带的actuator必须加上权限控制。但是我又不想因为这个而加上数据库,因为很多微服务是不需要数据库的。当然为了安全原因,用户名密码什么的也不可能代码里写死。于是想自己添加一个拦截器,碰到actuator请求就检查一下token。首先想到的是handlerinterceptor。写了个handlerinterceptor,却发现拦截不到actuat...

2019-07-02 20:36:30 3491 1

原创 Consul的缓存模式

作为分布式系统,当集群节点增长到数千时,不可避免的出现性能下降的问题。而consul本身提供了一些缓存模式,可以减少这种影响。一致性模式严格的说,这个不是一个缓存模式。默认情况下,所有来自于agent的请求,都会由leader来处理。这样导致leader的负担特别重。如果把一致性模式设置为stale,那么所有的server节点都会处理请求,就可以大幅降低leader的压力。缺点是,只有l...

2019-06-15 12:15:59 2745

原创 技术专家的种类

技术专家主要可以分为如下2种:布道师型和科学家型布道师型的特征:熟悉各种编程规则,了解各种设计方案。他们可以侃侃而谈,说起来头头是道。他们也了解很多技术细节。在面试过程中,这种人是最容易得到高分的。科学家型的特征:他们是真正精通的人,他们了解系统的基本原理,各种编程规则对他们来说是推导的结果而非基础知识。他们了解更多的底层知识,但是表达方面未必有布道师出色。在面试过程中,如果对方也是科学...

2019-06-08 08:23:05 1923 1

原创 微服务的思维方式

1,微服务化的思路:不能严格按照传统的系统设计思路来对照微服务的思路。比如,权限控制,传统的系统是一个很大的程序,提供很多接口,需要按接口控制权限才行。微服务化以后,一个服务只具有少量的接口,可以按服务在进行权限控制。再比如,系统性能。微服务化后,一个调用链有很多个服务,经过多次调用,所以单个请求的时间会更长。但是,大规模并发时,由于微服务的分散性和可扩展性,整体性能不会明显下降。所以不能按...

2019-06-08 08:04:22 157

原创 SpringCloud F版FeignClient的坑

现象:近期做压力测试,服务是基于spring cloud F版的,分为server和client,调用方式为FeignClient。测试工具为jmeter。结果发现,并发线程数较多(>40)时,持续一段时间后,请求总数差不多达到100万时,开始出现请求失败。这个错误比例在10%~30%之间。看日志,发现错误有两种:一种是ribbon报找不到目标服务,错误信息如下:Caused b...

2019-05-11 09:54:02 2352 1

原创 Consul代码介绍

Consul是开源的注册中心软件,用Go语言编写。Golang已经不推荐用makefile,但是历史原因吧,consul还是makefile。另外,引用consul内部的代码,也写成了import “github.com/hashicorp/consul/agent”,这就导致如果自己修改代码,目录不是hashicorp,就不会被引用。程序启动入口:consul\main.go命令行入口程...

2019-04-20 06:48:54 597

原创 SpringBoot启动过程解析

简要记录一下跟踪spring boot启动的过程。1,SpringBoot默认从SpringApplication.run启动。2,调用new SpringApplication(primarySources).run(args);3,执行如下动作:搜索并读取spring.factory文件,组成LinkedMultiValueMap获取ApplicationContextInitia...

2019-04-20 06:47:54 165

原创 Tomcat8.5性能优化

tomcat性能优化的文章很多,但是有很多内容已经过时了。近期因为需要写spring cloud F版的tomcat优化手册,故记录一下调查内容。参考:https://tomcat.apache.org/tomcat-8.5-doc/config/http.html(没有官方依据的优化都是耍流氓)springBoot2默认提供的tomcat配置:(略去部分不重要的)server.tomc...

2019-04-13 21:50:07 1432

原创 golang 协程测试

协程是一种由语言自己调度的并发处理方式,其调度不受CPU和操作系统的控制。Go语言而言,协程如果碰到IO等耗时操作,就会交出执行权,否则会一直执行下去,除非代码里自己交出执行权。下面是一个测试例子:1,如果只有1个CPU核心,且协程里没有sleep,则程序会按照代码的顺序执行完成。2,如果只有1个CPU核心,但协程里有sleep,则程序会按照代码的顺序开始执行,但结束的顺序是随机的。3,...

2019-02-25 19:28:58 635

原创 Golang CLI框架介绍

网址:https://github.com/mitchellh/cli功能该框架是个人开发的命令行程序框架,作者还成立了公司(HashiCorp),其公司的产品也采用这个CLI框架。解读框架的思路是:把命令和执行方法以map的形式记录在内部,然后根据用户输入的命令,决定执行哪个方法。实际上记录的是命令字符串和CommandFactory,由CommandFactory创建Command然后...

2019-02-21 09:51:26 6203

原创 Golang 环境安装

Golang虽然已经流行很多年了,但是官方没有提供开发环境,还是需要用户自己选择和配置。目前可用的开发环境,包含:Visual CodeEclipse我选择的是Visual Code,但是编辑代码时,仍然会提示缺乏一些插件。选择安装,却又总是安装失败。百度了一圈,发现一些方法并不适用,所以记录一下自己的做法。运行如下命令(可能需要翻墙):go get -u github.com/...

2019-02-17 18:09:54 177

原创 中间件的生产环境包版本监控方案

中间件的生产环境包版本监控方案问题方案1方案2方案3合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入问题在大型组织中,一个中间...

2019-02-10 19:10:44 369

sakura(樱花)文本编辑器源代码

sakura(樱花)文本编辑器的源代码

2007-05-17

sakura(樱花)文本编辑器

sakura(樱花)文本编辑器,原为日本人合作开发的自由软件,经本人翻译和部分改造后可在中文下运行。部分日文专用的功能没有翻译,大家可以忽视。因时间有限,有些东西未能做好,如有人愿意继续改进,本人可以提供源代码。同为程序员,希望大家少用盗版软件。msn:chigonhx@hotmail.com

2007-05-17

空空如也

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

TA关注的人

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