- 博客(294)
- 资源 (23)
- 问答 (7)
- 收藏
- 关注
原创 zuul灰度发布功能实现
灰度发布、蓝绿发布、金丝雀发布各是什么意思,可以看这篇http://www.appadhoc.com/blog/product-release-strategy/。基于eureka、ribbon实现灰度发布,是这一篇要讲的知识。我们要发布版本了,在不确定正确性的情况下,我们选择先部分节点升级,然后让一些特定的流量进入到这些新节点,完成测试后再全量发布。我们知道,在eureka中注册各个服务后,如果
2018-01-22 16:59:50 14839 9
转载 SpringCloud Feign重试详解
摘要: 今天在生产环境发生了数据库进程卡死的现象,除了sql因为全量更新,没加索引的原因,最主要还是我们的接口的服务器端接口出现问题了。忽视了更新接口的幂等性,以及调用方feign client的重试,导致接口重复执行。万幸的是数据已经修复,花了几个小时跟踪feign和ribbon的源码,把其原理彻底搞明白了。 feign是netflix提供的服务间基于http的rpc调用框架,在spr
2018-01-22 14:41:23 9873 2
原创 SpringCloud重试机制配置
SpringCloud重试retry是一个很赞的功能,能够有效的处理单点故障的问题。主要功能是当请求一个服务的某个实例时,譬如你的User服务启动了2个,它们都在eureka里注册了,那么正常情况下当请求User服务时,ribbon默认会轮询这两个实例。此时如果其中一个实例故障了,发生了宕机或者超时等,如果没有配置启用重试retry策略,那么调用方就会得到错误信息或者超时无响应或者是熔断返回的信息
2018-01-22 14:34:44 16254
原创 redis的一些知识-redis事务multi
redis是有事务的,但是不同于mysql的事务。redis的事务是由multi和exec包围起来的部分,当发出multi命令时,redis会进入事务,redis会进入阻塞状态,不再响应任何别的客户端的请求,直到发出multi命令的客户端再发出exec命令为止。那么被multi和exec包围的命令会进入独享redis的过程,直到执行完毕。事务同命令一样都是Redis的最小执行单位,一个事务中的命令
2018-01-16 10:33:00 3776 3
原创 redis的一些知识-使用pipeline来大幅提升redis的处理速度
redis通过tcp来对外提供服务,client通过socket连接发起请求,每个请求在命令发出后会阻塞等待redis服务器进行处理,处理完毕后将结果返回给client。其实和一个http的服务器类似,一问一答,请求一次给一次响应。而这个过程在排除掉redis服务本身做复杂操作时的耗时的话,可以看到最耗时的就是这个网络传输过程。每一个命令都对应了发送、接收两个网络传输,假如一个流程需要0.1秒,那
2018-01-15 16:24:44 7071
原创 redis的一些知识-配置文件解释
redis比较常用,但大部分人都是简单使用一下redis存一些key value,不太关心redis的持久化问题、事务、最大客户端连接数等问题。这一篇就是讲一些平时不太注意的事情。redis配置文件解释在redis的安装目录中,可以找到redis.conf,这个文件就是redis的主要配置文件,里面配置了很多属性。我挑几个可能用的着的来看一下,其他的可以看看这篇https://www.cnblog
2018-01-15 14:40:20 827
原创 同一套代码部署多个实例来并行完成某项任务,且避免重复执行
我经常会碰到一些耗时较长的任务,譬如更新5千万条表数据中的某个字段,代码中可以通过分页依次读取db,然后更新即可。但是耗时极长,那么能否通过将代码部署多个实例,譬如启动多个docker来并行执行任务,横向扩展,这样就能大幅减少耗时。但是问题在于代码是相同的,假如采用的是分页读取,依次更新,那么不管启动多少个实例,执行的都是重复任务,达不到并行的目的。那么怎么完成动态扩展后,就能分担任务,而不是执行
2018-01-05 15:20:45 4258
原创 kafka使用时的一些总结
1.在kafka最新版kafka_2.12-1.0.0的config文件夹server.properties中可以看到num.partitions=1,这个代表每个topic默认的分区数量。当你创建topic时,如果不指定该topic的partition数量,那么默认就是1个分区。这意味着你的这个topic,最多只能被一个group的一个consumer消费,该group的其他consumer将无
2018-01-05 14:45:13 1314
转载 kafka partition(分区)与 group
转载自:https://www.cnblogs.com/liuwei6/p/6900686.html一、1、原理图2、原理描述一个topic 可以配置几个partition,produce发送的消息分发到不同的partition中,consumer接受数据的时候是按照group来接受,kafka确保每个partition只能同一个group中的同一个consumer消费,如果想要重复消费,那么需要
2018-01-05 09:41:29 3403
原创 SpringBoot2.0 jpa多数据源配置
随着Springboot升级到2.0,原来1.5.x的Jpa多数据源配置不能用了。现在总结一下Springboot2.0的jpa多数据源配置连接池还是用druid,但是不能用druid的starter了,譬如在1.5.x时用的是<dependency> <groupId>com.alibaba</groupId> <artifa...
2017-12-26 18:15:34 33350 20
转载 【分布式】Zookeeper使用--开源客户端
转载自:http://www.cnblogs.com/leesf456/p/6032716.html一、前言 上一篇博客已经介绍了如何使用Zookeeper提供的原生态Java API进行操作,本篇博文主要讲解如何通过开源客户端来进行操作。二、ZkClient ZkClient是在Zookeeper原声API接口之上进行了包装,是一个更易用的Zookeeper客户端,其内部还实现了诸如Sess
2017-12-22 10:16:10 424
转载 【分布式】Zookeeper应用场景
转载自:http://www.cnblogs.com/leesf456/p/6036548.html一、前言 在上一篇博客已经介绍了Zookeeper开源客户端的简单实用,本篇讲解Zookeeper的应用场景。二、典型应用场景 Zookeeper是一个高可用的分布式数据管理和协调框架,并且能够很好的保证分布式环境中数据的一致性。在越来越多的分布式系统(Hadoop、HBase、Kafka)中,
2017-12-22 10:14:59 521
转载 JVM GC调优一则--增大Eden Space提高性能
转载自:http://blog.csdn.net/hengyunabc/article/details/24924843缘起线上有Tomcat升级到7.0.52版,然后有应用的JVM FullGC变频繁,在高峰期socket连接数,Cpu使用率都暴增。思路思路是Tomcat本身的代码应该是没有问题的,有问题的可能是应用代码升级,或者环境改变了,总之Tomcat的优先级排在最后。先把应用的heap
2017-12-21 15:55:36 1662 1
原创 zookeeper docker集群配置
本篇讲一下zookeeper在docker中集群搭建方式。先来看看zookeeper的单个Docker配置吧。共包含两个文件,一个Dockerfile,一个sh脚本Dockerfile如下:FROM openjdk:8-jre-alpine# Install required packagesRUN apk add --no-cache \ bash \ su-execE
2017-12-19 16:34:43 5024 2
转载 开发中大家如何对 JPA 或者 MyBatis 进行技术选型
原文地址:http://www.spring4all.com/question/112lexburner 3天前首先表达个人观点,JPA必然是首选的。个人认为仅仅讨论两者使用起来有何区别,何者更加方便,不足以真正的比较这两个框架。要评判出更加优秀的方案,我觉得可以从软件设计的角度来评判。个人对 mybatis 并不熟悉,但 JPA 规范和 springdata 的实现,设计理念绝对是超前的。软件开
2017-12-19 11:48:20 9452 8
转载 Docker下实战zabbix三部曲之三:自定义监控项
本文转载自:http://blog.csdn.net/boling_cavalry/article/details/77410178 @博陵精骑通过上一章《Docker下实战zabbix三部曲之二:监控其他机器》的实战,我们了解了对机器的监控是通过在机器上安装zabbix agent来完成的,zabbix agent连接上zabbix server之后,将自己所在机器的信息定时给到zabbix
2017-12-18 11:00:45 2440
转载 Docker下实战zabbix三部曲之二:监控其他机器
本文转载自:http://blog.csdn.net/boling_cavalry/article/details/77095153 @博陵精骑在上一章《Docker下实战zabbix三部曲之一:极速体验》中,我们快速安装了zabbix server,并登录管理页面查看了zabbix server所在机器的监控信息,但是在实际场景中,应该是对应用服务器做监控,所以今天我们来实战将应用服务器的监控
2017-12-18 10:59:34 487
转载 Docker下实战zabbix三部曲之一:极速体验
本文转载自:http://blog.csdn.net/boling_cavalry/article/details/76857936 @博陵精骑对于想学习和实践zabbix的读者来说,在真实环境搭建一套zabbix系统是件费时费力的事情,本文内容就是用docker来缩减搭建时间,目标是让读者们尽快投入zabbix系统的体验和实践;创建docker-compose.yml文件首先创建一份docke
2017-12-18 10:57:58 711
原创 解决retrofit OKhttp创建大量对外连接时内存溢出
这个问题是这样发生的,我的表中有一批数据,量级较大,数百万个,它们有个地址Address字段,标明了地理位置。我需要对这一批数据根据地址去百度或者高德地图去查询经纬度,并且保存下来。 原本是直接分页读取该表,每次读取几百条,然后一条一条去获取经纬度并且保存。后来发现实在太慢,一秒也就能处理个三五条。所以开启了多线程,大约30个线程,每个线程处理不同id范围的数据。 此时问题出现了,每个线程中都有
2017-12-15 13:44:08 20339 15
转载 深入理解docker的link机制
原文地址:https://yq.aliyun.com/articles/55912摘要: 什么是docker的link机制 同一个宿主机上的多个docker容器之间如果想进行通信,可以通过使用容器的ip地址来通信,也可以通过宿主机的ip加上容器暴露出的端口号来通信,前者会导致ip地址的硬编码,不方便迁移,并且容器重启后ip地址会改变,除非使用固定的ip,后者的通信方式比较单一,只能依靠监听在暴露出
2017-12-13 16:27:45 1364
原创 eureka配置账号密码才能访问
如果配置好了eureka server,默认情况下我们就直接直接访问到eureka的界面了。如果不想让所有人都能访问到eureka的界面,可以加上权限认证,输入账号密码才能访问。方式如下:在eureka的server端配置,pom.xml里加上 org.springframework.boot spring-boot-starter-security 然后在yml里加上
2017-12-12 14:14:58 18235 2
原创 安装配置Rancher管理docker
主机安装完docker后,无论是部署、发布、持续化集成等都不是特别方便,所以出现了大量第三方的docker管理工具,来界面化的管理docker。如果安装docker时过慢,也可以使用daocloud提供的镜像。这些docker管理平台可以通过界面来创建镜像、拉取远程镜像、部署到指定主机、启停、增删扩容镜像,避免了命令操作的繁琐,和在多个主机上维护大量docker的繁琐。这一篇来看看ra...
2017-12-12 10:33:06 16448 4
原创 Zuul超时问题,微服务响应超时,zuul进行熔断
是这样的,今天碰到了微服务响应超时问题,而且超时时间特别短,2秒就超时,zuul就走熔断了。 我采用zuul作为网关,根据不同的访问路径进行微服务的路由,譬如有个服务是user,我访问user服务的某个接口时,该接口执行时间很慢,2秒多,然后还没执行完,zuul就执行熔断了,进入了我配好的ZuulFallbackProvider里。所以来研究一下zuul的超时处理。 前提,zuul和微服务都已经
2017-12-11 14:23:48 66594 20
转载 微服务中网关(API Gateway)的技术选型
用 Spring Cloud 微服务实战中,大家都知道用 Zuul 作为智能网关。API 网关(API Gateway)主要负责服务请求路由、组合及协议转换。下面是大家的总结:一、最佳回答网关的技术选型SpringCloud-Zuul :社区活跃,基于 SrpingCloud 完整生态, 是构建微服务体系前置网关服务的最佳选型.Kong : 基于OpenResty的 API 网关服务和网关服务管理
2017-12-07 11:45:17 36766 3
原创 docker部署pinpoint,监控docker中的Springboot项目
pinpoint是一个开源的java监控项目,也是分布式监控项目中比较知名的。 网上有比较多的pinpoint部署指南,但都是基于主机部署的,这一篇主要是讲将pinpoint部署到docker中,并监控同样部署在docker的Springboot项目。 pinpoint包含4个部分,hbase,collector,web,agent。docker部署HBaseDockerfile如下:# DES
2017-12-06 10:14:35 8895 17
原创 zuul报错java.net.UnknownHostException: 4d59d509898a: Name or service not known
是这样的,eureka、zuul和普通的微服务在本地是OK的,部署到docker后,通过zuul访问某个微服务就报错了。用的是serviceId的方式,在eureka界面也能看到各个微服务都是在线的,没有问题,但就是通过zuul的路由访问时会报错。com.netflix.zuul.exception.ZuulException: Forwarding error2017/11/24 下午9:49:
2017-11-25 09:50:39 9015 8
原创 JPA(hibernate)一对多根据多的一方某属性进行过滤查询
我们经常会碰上某个字段是集合元素(List,Set)的情况,并且我们要过滤出集合中包含某个或某些元素的数据。 譬如一个类User /** * 检索人 */ private Long userId; /** * 省、直辖市集合 */ @ElementCollection @CollectionTable pr
2017-11-22 12:24:46 14597 1
原创 1 Springboot SpringCloud集成OAuth2入门详细教程
springboot集成OAuth客户端、服务端,springboot OAuth详细教程,springboot集成OAuth入门教程
2017-10-19 10:29:32 42284 18
原创 4 springboot项目集成使用disconf,配置文件更新及回调
在第二篇我们已经学会了单项配置项的动态更新,是基于@DisconfItem(key = KEY)的注解,当在disconf服务端对key相同的值进行修改时,能及时推送到客户端感应到该值的变化。这一篇主要是看一下基于配置文件的更新变化,不再是单项了,而是多项。譬如我有一个app.properties配置文件,里面有很多个键值对,譬如是一些数据库连接之类的信息。通过disconf,也可以对这样的文件进
2017-10-18 11:25:30 12185 2
原创 3 disconf在springboot下动态配置各个属性,基于docker环境
在上一篇中,我们在springboot项目中简单使用了disconf的配置功能,这一篇我们主要来详解一下disconf的配置文件的动态配置。来看一下disconf.properties文件# 是否使用远程配置文件# true(默认)会从远程获取配置 false则直接获取本地配置enable.remote.conf=true## 配置服务器的 HOST,用逗号分隔 127.0.0.1:80
2017-10-17 12:04:46 5455
原创 2 springboot项目集成使用disconf,基于docker环境
上一篇我们完成了disconf服务端的环境搭建,这一篇我们来看看客户端springboot如何继承disconf,最终在docker下运行。假定你已经在本机搭建好了disconf的web端环境,并已经能使用localhost访问到disconf的web界面。下面看客户端如何使用disconf。新建一个springboot项目,勾选web和aop。至于为什么要勾aop,后面用到disconf的回调时
2017-10-16 15:03:12 16492 1
原创 1 springboot项目集成使用disconf,基于docker环境
disconf是一个开源的分布式配置中心(https://github.com/knightliao/disconf),此外还有携程开源的Apollo(https://github.com/ctripcorp/apollo),Apollo要比disconf功能更为丰富、强大一些。disconf比较简单明了,已经能适用于大部分场景了,使用起来比较简单。我打算写篇文章来讲一些disconf在sprin
2017-10-16 14:03:22 2302 3
原创 使用idea根据数据库表生成java model类,基于hibernate
很多场景下我们需要根据已有的数据库表,生成对应的java bean,而且还希望生成的java类格式正确、命名规范。使用idea可以轻松的完成这个功能。举例,我新建一个springboot项目,勾选mysql、jpa即可,在idea找到Database界面,新建Data source——MySQL,填写数据连接信息后即可。此时就可以生成简单的pojo类了,注意,此时还没有使用hibernate呢,就
2017-10-11 15:43:52 11402 1
原创 springboot根据不同的条件创建bean,动态创建bean,@Conditional注解使用
这个需求应该也比较常见,在不同的条件下创建不同的bean,具体场景很多,能看到这篇的肯定懂我的意思。倘若不了解spring4.X新加入的@Conditional注解的话,要实现不同条件创建不同的bean还是比较麻烦的,可能需要硬编码一些东西做if判断。那么现在有个@Conditional注解后,事情就简单多了。用法很简单,直接上代码。新建一个springboot项目,添加一个Configurati
2017-10-11 11:17:39 59968 4
转载 eureka客户端源码解析
原文:https://blog.tookbra.com/2017/08/25/Spring-Cloud-Eureka-Client-Source/源码目录结构.├── pom.xml└── src ├── main │ ├── java │ │ └── org │ │ └── springframework │ │
2017-10-10 16:08:59 3403
原创 eureka监听各服务状态,下线、重连等,并做相应的处理
在一些场景下,我们需要监听eureka服务中心的一些状态,譬如某个微服务挂掉了,我们希望能监听到,并给管理员发送邮件通知。Eureka的server端会发出5个事件通知,分别是:EurekaInstanceCanceledEvent 服务下线事件EurekaInstanceRegisteredEvent 服务注册事件EurekaInstanceRenewedEvent 服务续约事件EurekaRe
2017-10-10 15:11:27 32564 17
原创 eureka集群高可用配置
网上讲这个东西的很多,抄来抄去的,大部分类似,多数没讲明白为什么那么配置。譬如eureka.client.register-with-eureka和fetch-registry是否要配置,配不配区别在哪里;eureka的客户端添加service-url时,是不是需要把所有的eureka的server地址都写上,还是只需要写一个server就可以了(因为server之间已经相互注册了)?如果写上了所...
2017-10-09 17:27:47 66636 58
转载 zuul微服务网关的常用示例
微服务架构体系中,通常一个业务系统会有很多的微服务,比如:OrderService、ProductService、UserService...,为了让调用更简单,一般会在这些服务前端再封装一层,类似下面这样:前面这一层俗称为“网关层”,其存在意义在于,将"1对N"问题 转换成了"1对1”问题,同时在请求到达真正的微服务之前,可以做一些预处理,比如:来源合法性检测,权限校验,反爬虫之类...传统方式
2017-09-25 11:20:17 11072
原创 zuul设置熔断、断路器
在前面一篇文章中http://blog.csdn.net/tianyaleixiaowu/article/details/77884778,已经讲过了独立使用zuul进行反向代理了。在那篇文章中,没有使用eureka进行服务发现,而是使用简单的url配置,直接将用户请求发送到指定的url。这种做法适合于兼容一些老系统或者无法进行eureka服务注册的项目中,当时有一个东西没有提到,那就是熔断器。...
2017-09-22 16:15:44 16620 2
java反编译工具jad
2012-11-10
音乐播放器java制作
2012-11-07
ElasticSearch怎么做查询某个字段大于某个值的查询
2017-09-20
问一个使用hibernate对表排序的问题
2016-10-25
javaweb大神请进,如何在struts的一个action里处理多个数据操作逻辑
2016-07-15
求一个富文本编辑器,生成的网页能在手机上适配。不需要在电脑上适配
2016-06-08
服务器上tomcat需要更新程序时,大家是怎么办的,直接关闭tomcat重启吗?
2016-04-27
TA创建的收藏夹 TA关注的收藏夹
TA关注的人