11 Saleson

尚未进行身份认证

喜欢看书,看技术贴,喜欢研究如何提高开发效率,和大型网站的高并发性能.目前从事JAVA后端架构。

等级
TA的排名 4w+

StringBuilder引起的OOM[线上]

背景最近一个大版本上线,上线前做了codereview,发布时也只发了一台机器,放量10%,结果这一台机器到了晚上10点时,eureka状态被置为outofservice;当时没有同视这一情况,加上各种产品催,冒着风险全量发布了,晚上6点左右被叫去分析问题,晚上8点左右服务器出现内存异常升高,机器上的应用直接被系统kill掉,晚上9:21服务不可用,工单狂涨,然后回滚,20分钟后恢复服务。服...

2019-12-06 13:23:37

JStorm与springboot(cloud)集成

集成spring boot本地模式使用jstorm本地模式topology时,可以是jstorm包含springboot,也可以是springboot 包含jstorm,这不影响jar和topology的运行。所以本地模式下,jstorm与springboot或springcloud如何进行集成,都没有影响,但是如果将topology提交到集群去运行时,代码的工程结构就得是jstorm包含sp...

2019-11-04 12:11:01

JStorm部署

机器规划172.16.10.210:jstorm nimbus master,jstorm supervisor172.16.10.211:jstorm supervisor172.16.10.212:jstorm supervisor172.16.10.220:2181 : zookeeper集群部署准备安装包wget https://github.com/alibaba/jsto...

2019-11-04 12:09:08

maven 通过profiles管理不同环境的依赖和插件

Profile能让你为一个特殊的环境自定义一个特殊的构建;profile使得不同环境间构建的可移植性成为可能。Maven中的profile是一组可选的配置,可以用来设置或者覆盖配置默认值。有了profile,你就可以为不同的环境定制构建。profile可以在pom.xml中配置,并给定一个id。然后你就可以在运行Maven的时候使用的命令行标记告诉Maven运行特定profile中的目标。一个Pr...

2019-09-03 23:20:55

Spring Cloud Gray 微服务灰度中间件

Spring Cloud Gray 是一套开源的微服务灰度路由解决方案,它由 spring-cloud-gray-client,spring-cloud-gray-client-netflix 和 spring-cloud-tray-server,spring-cloud-gray-webui 组成。spring-cloud-gray-client 定义了一套灰度路由决策模型,灰度信息追踪模型...

2019-09-07 00:35:12

feign+hystrix根据serviceId配置hystrix.command

在使用feign+hystrix时,hystrix.command相关的属性的优先级是hystrix.command.FeignClient#Method() -> hystrix.command.default如果我们希望优先级是hystrix.command.FeignClient#Method() -> hystrix.command.FeignClient#nam...

2019-04-23 19:23:33

spring cloud eureka server 集群同步之peernodes管理

在PeerAwareInstanceRegistryImpl这个注册实现类中会看到replicateToPeers这个方法:@Overridepublic boolean cancel(final String appName, final String id, final boolean isReplication) { i...

2018-10-31 23:13:29

查看docker容器的内存占用

使用dockerstats命令可以查看容器的内存,但是有时候dockerstats命令获得的数据可能准确,可以参考下面这种方式先通过dockerps-a找到容器的containerid再使用ps-ef找到容器对应的进程获得容器对应的pid后,就可以使用top、pmap、ps等查看进程内存的命令查看容器的内存占用情况了toptop-p5140内容解释PID...

2018-10-17 15:58:44

发布jar包到maven中央库

最近将一个开源项目发布到maven中央库,记录一下发布过程,以及遇到的坑。创建账号sonatype是使用jira管理工单的,如果我们要新建工单,首先需要创建一个账号,这个账号同样可以用sonatype的Nexus,我们通过Nexus最终发布到中央库。打开链接 https://issues.sonatype.org/secure/Signup!default.jspa 去注册一个账...

2018-05-09 12:49:05

Spring cloud ribbon 源码分析

Ribbon是Netflix公司开源的一个负载均衡的项目,它属于上述的第二种,是一个客户端负载均衡器,运行在客户端上。我们先来看三张序列图,分别是RestTemplate、Feign、Zuul在使用Ribbon的调用链。 从上面三张图中可以看出, 最终都是调用ILoadBalancer#chooseServer()方法筛选服务实例,并且在spring cloud中, 默认使用的是Zo...

2018-04-24 16:54:49

Intellij Idea 代码格式化/保存时自动格式化

由于以前的项目中使用的是googlestyle,在这里也介绍使用googlestyle的的方法。一、安装google-java-formatpreferences->plugins->Browserepositories…搜索google-java-format启用google-java-format二、安装saveactionspreferen

2018-02-07 14:41:21

基于Spring cloud ribbon实现灰度发布

在上一篇文章《基于Spring cloud ribbon实现多版本控制》中介绍了如何扩展spring cloud ribbon实现接口多版本控制的项目 – fm-cloud-bambbo, 开发这个项目的过程,给我提供了很多想法和思路,发现只要再做一些扩展,就可以实现灰度管理,于是又有了 fm-cloud-graybunny。灰度发布灰度发布是在多版本控制的基础上进一步扩展实现出来的项

2018-01-29 11:54:12

大量线程没结束导致cpu跑满的排查分析

背景公司新迭代了一个版本, 但是上线没多久,cpu就跑满,导致所有的请求都响应很慢, 大多数请求都超时,甚至有一次OOM。出现这样的情况,以前的负责人就叫运维重启。现在这个项目交给我来负责, 我需要把导致这个现象的原因找出来,并解决掉。前负责人说怀疑是首页接口的问题,看了代码,还真是。吐槽公司使用docker运行spring boot项目, docker运行的系统和jdk是非常

2018-01-24 21:04:54

基于Spring cloud ribbon实现多版本控制

在我们使用spring mvc单体架构时, 我们可以通过uri,或者请求头做多版本路由,虽然同一个功能需要维护多个版本的接口,但是对于系统而言,不会因为新增一个接口版本而影响到老用户。当我们使用spring cloud构建微服务平台时,也希望能做到这一点,然而spring cloud并没有提供这个功能。在spring cloud的微服务体系中,大多是使用eureka做为注册中心,ribbon做

2018-01-23 10:26:54

jprofiler监听远程linux上的tomcat

注意事项jprofiler在linux上的版本要和在监听机器上的版本一致。在被监听的程序中加入jvm运行参数 -agentpath:/opt/jprofiler9/bin/linux-x64/libjprofilerti.so=port={port},nowait以jprofiler 9.2.1 为例客户端下载 jprofiler 9.2.1打开网址https://www.ej-techn

2017-12-26 14:34:57

spring-cloud-eureka (三) 注册中心源码分析

Eureka是一个开源的服务治理框架,它提供了完成的Service Registry和Service Discovery实现,并且和Spring Cloud无缝集成,使用Spring Boot + Spring Cloud可以轻松的将注册中心搭建起来。Eureka架构基础架构 上图简单的描述了Eureka的基本结构,由3个角色组成:Eureka Server: 维护服务信息,包括实例信息,提供服

2017-12-19 16:55:46

spring-cloud-eureka (二) Client - Server 接口交互(消息发送)源码分析

上一篇文章中有介绍spring-cloud-eureka的原因,以及一部分源码分析了服务在启动时是如何加载并运行spring-cloud-eureka的,这一篇文章将从源码的角度来分析spring-cloud-eureka是如何进行服务治理的。服务注册服务注册的真正入口在com.netflix.discovery.DiscoveryClient#register()public class Disc

2017-12-15 15:40:08

spring-cloud-eureka (一) 原理分析

spring-cloud-eureka是spring-cloud-nettfix微服务套件中的一部分, 它基于nettfix-eureka做了二次封装,主要负责微服务架构中的服务治理功能。 如果了解dubbo的朋友应该知道,dubbo就是一个服务治理的框架,dubbo是基于zookeeper实现服务治理功能的。至于dubbo和nettfix-eureka的区别这里不多说,网上有不少这类文章。

2017-12-14 10:36:27

IntelliJ Idea 项目(初始化/删除) Git

一. 已有项目导入git假设项目已存在,项目名为test-git.创建git仓库以码云为例,创建test-git项目的仓库.取消沟选"使用Readme文件初始化这个项目", 点创建。创建完后,复制仓库地址:https://gitee.com/sson/test-git.gitIntelliJ Idea 项目导入git仓库 先启用版本控制: VCS --> Enable Version Contr

2017-11-17 20:54:22

Mac OS 使用openssl生成RSA公钥和公钥

Mac OS 自带了openssl,可以直接在命令行中运行openssl。 打开终端,进入指定目录下:cd /test/rsa/keyopenssl//生成一个1024位的私钥genrsa -out rsa_private_key.pem 1024//利用私钥生成JAVA支持的PKCS8类型的私钥pkcs8 -topk8 -inform PEM -in rsa_private_key.pe

2017-10-30 11:20:27

查看更多

勋章 我的勋章
  • GitHub
    GitHub
    绑定GitHub第三方账户获取
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。