自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

程序猿DD

《Spring Cloud微服务实战》作者、腾讯云TVP、阿里云MVP,公众号:程序猿DD,独立博客:didispace.com,专注分享前沿技术和硬核知识!

  • 博客(81)
  • 资源 (5)
  • 收藏
  • 关注

原创 Spring Boot自动化配置的利弊及解决之道

Spring Boot中的双刃剑:自动化配置在之前发布的Spring Boot基础教程系列文章中,我们通过各种功能性示例体验了Spring Boot的自动化配置给我们所带来的超便利的新开发方式。但是,在一些情况下Spring Boot的自动化配置也会给我们惹来不少的麻烦,比如这些场景:项目依赖复杂的情况下,由于依赖方的依赖组织不够严格,可能引入了一些实际我们不需要的依赖,从而导致我们的项目...

2017-06-26 14:11:33 17852

原创 SpringCloud中文社区转型Spring4All欢迎您的加入

相信关注我们Spring Cloud中文社区(bbs.springcloud.com.cn)的朋友们最近已经在最新的横幅中发现了一个全新的社区:spring4all.com,相信从名字大家也能猜到该域名寓意Spring For All,那么我们为什么要重新创建这样一个社区呢?关于Spring For All截止至今天,我们的论坛注册用户也已经有1000+名了,在维护Spring Cloud中文

2017-06-26 14:11:29 2025

原创 Spring Boot中使用Actuator的/info端点输出Git版本信息

对于Spring Boot的Actuator模块相信大家已经不陌生了,尤其对于其中的/health、/metrics等强大端点已经不陌生(如您还不了解Actuator模块,建议先阅读《Spring Boot Actuator监控端点小结》)。但是,其中还有一个比较特殊的端点/info经常被大家所忽视,因为从最初的理解,它主要用来输出application.properties配置文件中通过info

2017-06-26 14:11:25 7554

原创 Spring Cloud实战小贴士:Zuul统一异常处理(二)

在前几天发布的《Spring Cloud实战小贴士:Zuul统一异常处理(一)》一文中,我们详细说明了当Zuul的过滤器中抛出异常时会发生客户端没有返回任何内容的问题以及针对这个问题的两种解决方案:一种是通过在各个阶段的过滤器中增加try-catch块,实现过滤器内部的异常处理;另一种是利用error类型过滤器的生命周期特性,集中地处理pre、route、post阶段抛出的异常信息。通常情况下,我

2017-06-26 14:11:21 3822

原创 Spring Cloud实战小贴士:Zuul统一异常处理(一)

在上一篇《Spring Cloud源码分析(四)Zuul:核心过滤器》一文中,我们详细介绍了Spring Cloud Zuul中自己实现的一些核心过滤器,以及这些过滤器在请求生命周期中的不同作用。我们会发现在这些核心过滤器中并没有实现error阶段的过滤器。那么这些过滤器可以用来做什么呢?接下来,本文将介绍如何利用error过滤器来实现统一的异常处理。过滤器中抛出异常的问题首先,我们可以来看看

2017-06-26 14:11:17 5723 1

原创 Spring Cloud源码分析(四)Zuul:核心过滤器

通过之前发布的《Spring Cloud构建微服务架构(五)服务网关》一文,相信大家对于Spring Cloud Zuul已经有了一个基础的认识。通过前文的介绍,我们对于Zuul的第一印象通常是这样的:它包含了对请求的路由和过滤两个功能,其中路由功能负责将外部请求转发到具体的微服务实例上,是实现外部访问统一入口的基础;而过滤器功能则负责对请求的处理过程进行干预,是实现请求校验、服务聚合等功能的基础

2017-06-26 14:11:13 1178

原创 Spring Cloud实战小贴士:Zuul处理Cookie和重定向

由于我们在之前所有的入门教程中,对于HTTP请求都采用了简单的接口实现。而实际使用过程中,我们的HTTP请求要复杂的多,比如当我们将Spring Cloud Zuul作为API网关接入网站类应用时,往往都会碰到下面这两个非常常见的问题:会话无法保持 重定向后的HOST错误本文将帮助大家分析问题原因并给出解决这两个常见问题的方法。会话保持问题通过跟踪一个HTTP请求经过Zuul到具体...

2017-06-26 14:11:09 9857

原创 基于Consul的分布式信号量实现

在之前《基于Consul的分布式锁实现》一文中我们介绍如何基于Consul的KV存储来实现分布式互斥锁。本文将继续讨论基于Consul的分布式锁实现。信号量是我们在实现并发控制时会经常使用的手段,主要用来限制同时并发线程或进程的数量,比如:Zuul默认情况下就使用信号量来限制每个路由的并发数,以实现不同路由间的资源隔离。信号量(Semaphore),有时被称为信号灯,是在多线程环境下使用的一种设

2017-06-26 14:11:01 1271

原创 基于Consul的分布式锁实现

我们在构建分布式系统的时候,经常需要控制对共享资源的互斥访问。这个时候我们就涉及到分布式锁(也称为全局锁)的实现,基于目前的各种工具,我们已经有了大量的实现方式,比如:基于Redis的实现、基于Zookeeper的实现。本文将介绍一种基于Consul 的Key/Value存储来实现分布式锁以及信号量的方法。分布式锁实现基于Consul的分布式锁主要利用Key/Value存储API中的acqui

2017-06-26 14:10:57 2188

原创 《Spring Cloud微服务实战》开始预售

京东、亚马逊已全面开启预售!快来一起体验Spring Cloud所带来的全家桶式微服务架构解决方案!扫一扫前往京东购买本书目录第一章 基础知识什么是微服务架构与单体系统的区别如何实施微服务为什么选择Spring CloudSpring Cloud简介版本说明第二章 微服务构建:Spring Boot框架简介快速入门项目构建与解析实现RESTful API

2017-06-26 14:10:52 1104

原创 Netflix Zuul与Nginx的性能对比

这是一篇翻译,关于大家经常质疑的一个问题:API网关Zuul的性能。原文:NETFLIX ZUUL VS NGINX PERFORMANCE作者:STANISLAV MIKLIK如今你可以听到很多关于“微服务”的信息。Spring Boot是一个用来构建单个微服务应用的理想选择,但是你还需要以某种方式将它们互相联系起来。这就是Spring Cloud试图解决的问题,尤其是Spring ...

2017-06-26 14:10:48 28788 4

原创 SpringCloud实战小贴士:随机端口

太久没有更新,一时不知道该从哪儿开始,索性就从一个小技巧开始吧。在之前的《Spring Cloud构建微服务架构》系列博文中,我们经常会需要启动多个实例的情况来测试注册中心、配置中心等基础设施的高可用,也会用来测试客户端负载均衡的调用等。但是,我们一个应用只能有一个端口号,这就使得在本机测试的时候,不得不为同一个服务设置不同的端口来进行启动。在本地用不同端口启动同一服务实例的方法有很多。最传统

2017-06-26 14:10:42 1919

原创 使用Spring Boot Actuator、Jolokia和Grafana实现准实时监控

由于最近在做监控方面的工作,因此也读了不少相关的经验分享。其中有这样一篇文章总结了一些基于Spring Boot的监控方案,因此翻译了一下,希望可以对大家有所帮助。原文:Near real-time monitoring charts with Spring Boot Actuator, Jolokia and GrafanaSpring Boot Actuator通过/metrics端点,

2017-06-26 14:10:38 3371

原创 SpringCloud实战小贴士:版本依赖关系

去年在博客上连载了《Spring Cloud构建微服务架构》的系列博文,虽然这部分内容得到了不少关注者们的支持,但是不得不说这些内容只是适用于Spring Cloud入门阶段对各个组件的初步认识。所以,今年除了将会继续更新《Spring Cloud构建微服务架构》系列的连载之外,准备再开一个新系列:《SpringCloud实战小贴士》,该系列文章内容将会聚焦在下面三个点上:常见问题的解析构建

2017-06-26 14:10:34 1041

原创 我的新书《Spring Cloud微服务实战》预告

从去年6月开始编写《Spring Cloud构建微服务架构》系列博文开始,受到了不少同行的关注与支持。随后也开通了多个交流群、创建了相关的论坛(http://bbs.springcloud.cn),虽然Spring Cloud在国内变得越来越火热,但是这一块相关的书籍在国内外一直都还是处于空白状态。由于官方文档过于概要和简略,对于一些初学者来说学习门槛较高,所以从去年开始编写这本详细介绍Sprin

2017-06-26 14:10:30 805

原创 在传统Spring应用中使用spring-boot-actuator模块提供监控端点

在之前发布的《Spring Boot Actuator监控端点小结》一文中,我们介绍了Spring Boot Actuator模块为应用提供的强大监控能力。在Spring Boot应用中,我们只需要简单的引入spring-boot-starter-actuator依赖就能为应用添加各种有用的监控端点。其中,/health端点能够全面检查应用的健康状态,该端点也被Spring Cloud中的服务治理

2017-06-26 14:10:26 2658 2

原创 使用Intellij中的Spring Initializr来快速构建Spring Boot/Cloud工程

在之前的所有Spring Boot和Spring Cloud相关博文中,都会涉及Spring Boot工程的创建。而创建的方式多种多样,我们可以通过Maven来手工构建或是通过脚手架等方式快速搭建,也可以通过《Spring Boot快速入门》一文中提到的SPRING INITIALIZR页面工具来创建,相信每位读者都有自己最喜欢和最为熟练的创建方式。本文我们将介绍嵌入的Intellij中的Spr

2017-06-26 14:10:21 888

原创 新年彩蛋:Spring Boot自定义Banner

借用Spring Boot的Banner向各位程序猿同仁们问候一声:Happy New Year。(简书发晚了....)banner-happy-new-year.png接下来我们就来介绍一下这个轻松愉快的自定义banner功能。实现的方式非常简单,我们只需要在Spring Boot工程的/src/main/resources目录下创建一个banner.txt文件,然后将ASCII字符画复

2017-06-26 14:10:17 947

原创 Consul注销实例时候的问题

当我们在Spring Cloud应用中使用Consul来实现服务治理时,由于Consul不会自动将不可用的服务实例注销掉(deregister),这使得在实际使用过程中,可能因为一些操作失误、环境变更等原因让Consul中存在一些无效实例信息,而这些实例在Consul中会长期存在,并处于断开状态。它们虽然不会影响到正常的服务消费过程,但是它们会干扰我们的监控,所以我们可以实现一个清理接口,在确认故

2017-06-26 14:10:13 3119 2

原创 Spring Boot应用的后台运行配置

酱油一篇,整理一下关于Spring Boot后台运行的一些配置方式。在介绍后台运行配置之前,我们先回顾一下Spring Boot应用的几种运行方式:运行Spring Boot的应用主类使用Maven的Spring Boot插件mvn spring-boot:run来运行打成jar包后,使用java -jar运行我们在开发的时候,通常会使用前两种,而在部署的时候往往会使用第三种。但是,我

2017-06-26 14:10:09 1024

原创 Spring Boot Actuator监控端点小结

在Spring Boot的众多Starter POMs中有一个特殊的模块,它不同于其他模块那样大多用于开发业务功能或是连接一些其他外部资源。它完全是一个用于暴露自身信息的模块,所以很明显,它的主要作用是用于监控与管理,它就是:spring-boot-starter-actuator。spring-boot-starter-actuator模块的实现对于实施微服务的中小团队来说,可以有效地减少监控

2017-06-26 14:10:05 1069

原创 为Spring Cloud Ribbon配置请求重试(Camden.SR2+)

当我们使用Spring Cloud Ribbon实现客户端负载均衡的时候,通常都会利用@LoadBalanced来让RestTemplate具备客户端负载功能,从而实现面向服务名的接口访问。下面的例子,实现了对服务名为hello-service的/hello接口的调用。由于RestTemplate被@LoadBalanced修饰,所以它具备客户端负载均衡的能力,当请求真正发起的时候,url中的服

2017-06-26 14:10:00 2928 3

原创 使用Spring StateMachine框架实现状态机

Spring StateMachine框架可能对于大部分使用Spring的开发者来说还比较生僻,该框架目前差不多也才刚满一岁多。它的主要功能是帮助开发者简化状态机的开发过程,让状态机结构更加层次化。前几天刚刚发布了它的第三个Release版本1.2.0,其中增加了对Spring Boot的自动化配置,既然一直在写Spring Boot的教程,所以干脆就将该内容也纳入进来吧,希望对有需求的小伙伴有一

2017-06-26 14:09:54 1245

原创 Spring Cloud源码分析(二)Ribbon(续)

因文章长度限制,故分为两篇。上一篇:《Spring Cloud源码分析(二)Ribbon》负载均衡策略通过上一篇对Ribbon的源码解读,我们已经对Ribbon实现的负载均衡器以及其中包含的服务实例过滤器、服务实例信息的存储对象、区域的信息快照等都有了深入的认识和理解,但是对于负载均衡器中的服务实例选择策略只是讲解了几个默认实现的内容,而对于IRule的其他实现还没有详细的解读,下面我们来看看

2017-06-26 14:09:50 1363

原创 Spring Cloud源码分析(二)Ribbon

断断续续看Ribbon的源码差不多也有7-8天了,总算告一段落。本文记录了这些天对源码的阅读过程与一些分析理解,如有不对还请指出。友情提示:本文较长,请选择一个较为舒适的姿势来阅读在之前介绍使用Ribbon进行服务消费的时候,我们用到了RestTemplate,但是熟悉Spring的同学们是否产生过这样的疑问:RestTemplate不是Spring自己就有的吗?跟Ribbon的客户端负载均衡

2017-06-26 14:09:46 1608

原创 Spring Cloud构建微服务架构(七)消息总线(续:Kafka)

Spring Cloud Bus除了支持RabbitMQ的自动化配置之外,还支持现在被广泛应用的Kafka。在本文中,我们将搭建一个Kafka的本地环境,并通过它来尝试使用Spring Cloud Bus对Kafka的支持,实现消息总线的功能。由于本文会以之前Rabbit的实现作为基础来修改,所以先阅读《Spring Cloud构建微服务架构(七)消息总线》有助于理解本文。Kafka简介Kaf

2017-06-26 14:09:42 868

原创 Spring Cloud构建微服务架构(七)消息总线

先回顾一下,在之前的Spring Cloud Config的介绍中,我们还留了一个悬念:如何实现对配置信息的实时更新。虽然,我们已经能够通过/refresh接口和Git仓库的Web Hook来实现Git仓库中的内容修改触发应用程序的属性更新。但是,若所有触发操作均需要我们手工去维护Web Hook中的应用位置的话,这随着系统的不断扩张,会变的越来越难以维护,而消息代理中间件是解决该问题最为合适的方

2017-06-26 14:09:38 749

原创 Spring Cloud构建微服务架构(四)分布式配置中心(续)

本文接之前的《Spring Cloud构建微服务架构(四)分布式配置中心》,继续来说说Spring Cloud Config的使用。先来回顾一下,在前文中我们完成了什么:构建了config-server,连接到Git仓库在Git上创建了一个config-repo目录,用来存储配置信息构建了config-client,来获取Git中的配置信息在本文中,我们继续来看看Spring Clo

2017-06-26 14:09:35 748

原创 Spring Boot中使用RabbitMQ

很久没有写Spring Boot的内容了,正好最近在写Spring Cloud Bus的内容,因为内容会有一些相关性,所以先补一篇关于AMQP的整合。Message Broker与AMQP简介Message Broker是一种消息验证、传输、路由的架构模式,其设计目标主要应用于下面这些场景:消息路由到一个或多个目的地消息转化为其他的表现方式执行消息的聚集、消息的分解,并将结果发送到他们

2017-06-26 14:09:31 1101

原创 Spring Cloud源码分析(一)Eureka

看过之前文章的朋友们,相信已经对Eureka的运行机制已经有了一定的了解。为了更深入的理解它的运作和配置,下面我们结合源码来分别看看服务端和客户端的通信行为是如何实现的。另外写这篇文章,还有一个目的,还是希望鼓励大家能够学会学习和研究的方法,由于目前Spring Cloud的中文资料并不多,并不是大部分的问题都能找到现成的答案,所以其实很多问题给出一个科学而慎重的解答也都是花费研究者不少精力的。

2017-06-26 14:09:27 1175

原创 《微服务》九大特性重读笔记

今天重读了Martin Fowler的《Microservices》,在此记录一下对九大特性的理解。服务组件化组件,是一个可以独立更换和升级的单元。就像PC中的CPU、内存、显卡、硬盘一样,独立且可以更换升级而不影响其他单元。在“微服务”架构中,需要我们对服务进行组件化分解。服务,是一种进程外的组件,它通过http等通信协议进行协作,而不是传统组件以嵌入的方式协同工作。服务都独立开发、部署,

2017-06-26 14:09:23 732

原创 创新或许就是青睐偏执狂

今天无意看到了阮一峰接受图灵教育的访谈,才知道这位70后前辈居然也是一位跨界从事IT行业的大牛。我是70后,在上海出生和长大,大学糊里糊涂读了经济学。工作了几年,又去读了世界经济的研究生,毕业后,在上海一所本地高校当了老师,教财经类的课程。最近,去了支付宝的前端团队,在玉伯负责的"体验技术部"工作,目前主要从事JavaScript和Node.js的开发。我翻译了《软件随想录》和《黑客与画家》,出

2017-06-26 14:09:19 641

原创 聊聊Spring Cloud版本的那些事儿

继续昨天说的计划,解惑一下收到比较多的问题。有朋友问“为什么在很多文章中,大家引用的Spring版本名字都不一样呢?比如:Angel.SR6,Brixton.SR5等等,它们都有什么区别呢?”,今天我们就聊聊这个轻松一些的话题,说说Spring Cloud版本的那些事儿。版本命名之前提到过,Spring Cloud是一个拥有诸多子项目的大型综合项目,原则上其子项目也都维护着自己的发布版本号。

2017-06-26 14:09:15 2498

原创 Spring Cloud构建微服务架构(六)高可用服务注册中心

近期因工作原因减缓了更新频率,同时为了把Spring Cloud中文社区搭建起来也费了不少时间,几乎每天都在挤牙膏般的凑时间出来做一些有意义的事。未能按原计划更新博文,在此对持续关注我博客的朋友们深表歉意。之前在写Spring Cloud系列文章的时候,列过一个较粗的计划,现在由于收到不少反馈和问题,因此准备做一些调整,先将一些大家关注较为集中的点拉出来写一些内容。今天这篇主要就说说Eurek

2017-06-26 14:09:11 690

原创 Spring Boot中使用MyBatis注解配置详解

之前在Spring Boot中整合MyBatis时,采用了注解的配置方式,相信很多人还是比较喜欢这种优雅的方式的,也收到不少读者朋友的反馈和问题,主要集中于针对各种场景下注解如何使用,下面就对几种常见的情况举例说明用法。在做下面的示例之前,先准备一个整合好MyBatis的工程,可参见Spring Boot整合MyBatis,也可直接使用整合好的样例:Chapter3-2-7。传参方式下面通过

2017-06-26 14:09:06 890

原创 Confluence迁移中遇到的问题(Data too long for column 'STRINGVAL')及解决方法

今天因为团队需要,协助帮忙看Confluence的这个问题,通过大半天的分析研究也得到不少收获,在此记录一下问题的原因以及最后的解决方案,希望对各位在迁移中碰到类似问题的大神们有所帮助。迁移步骤先大致说一下基本的迁移步骤:创建备份使用管理员账户登录Confluence,点击右上角“齿轮”图标,选择General Configuration在侧边栏中,选择Backup & Resto

2017-06-26 14:09:02 1877

原创 微服务架构的基础框架选择:Spring Cloud还是Dubbo?

最近一段时间不论互联网还是传统行业,凡是涉及信息技术范畴的圈子几乎都在讨论微服务架构。近期也看到各大技术社区开始组织一些沙龙和论坛来分享Spring Cloud的相关实施经验,这对于最近正在整理Spring Cloud相关套件内容与实例应用的我而言,还是有不少激励的。目前,Spring Cloud在国内的知名度并不高,在前阵子的求职过程中,与一些互联网公司的架构师、技术VP或者CTO在交流时,有

2017-06-26 14:08:58 715

原创 Spring Cloud构建微服务架构(五)服务网关

通过之前几篇Spring Cloud中几个核心组件的介绍,我们已经可以构建一个简略的(不够完善)微服务架构了。比如下图所示:alt我们使用Spring Cloud Netflix中的Eureka实现了服务注册中心以及服务注册与发现;而服务间通过Ribbon或Feign实现服务的消费以及均衡负载;通过Spring Cloud Config实现了应用多环境的外部化配置以及版本管理。为了使得服务

2017-06-26 14:08:54 706

原创 Spring Cloud构建微服务架构(四)分布式配置中心

Spring Cloud Config为服务端和客户端提供了分布式系统的外部化配置支持。配置服务器为各应用的所有环境提供了一个中心化的外部配置。它实现了对服务端和客户端对Spring Environment和PropertySource抽象的映射,所以它除了适用于Spring构建的应用程序,也可以在任何其他语言运行的应用程序中使用。作为一个应用可以通过部署管道来进行测试或者投入生产,我们可以分别为

2017-06-26 14:08:50 758 3

原创 SpringMVC中使用FastJsonHttpMessageConverter时Swagger2失效的解决办法

2016-08-01补充:该问题解决已合并入fastjson 1.2.15版本,请使用1.2.15+版本就不需要做下面的改造了FastJson是阿里巴巴开源的高性能JSON转换工具。我们在使用Spring MVC需要进行JSON转换时,通常会使用FastJson提供的FastJsonHttpMessageConverter。但是在我们使用了Swagger2的工程中使用它之后,我们的Api文档就无

2017-06-26 14:08:46 2962 2

Objective-C基础教程.pdf

Objective-C基础教程.pdf

2012-10-17

spring攻略第二版

Spring攻略第二版,Spring Recipes 2nd

2012-10-17

Beginning IOS5 Development

Beginning IOS5 Development

2012-08-26

Hibernate简明参考

Hibernate.pdf 简明参考。。。。。。。

2009-02-17

Struts 2 Core 2.0.6 API

Struts 2 Core 2.0.6 API

2009-02-17

空空如也

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

TA关注的人

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