实用技巧:Hystrix传播ThreadLocal对象(两种方案) (zhuanlan.zhihu.com)
目前,Spring Cloud已在南京公司推广开来,不仅如此,深圳那边近期也要基于Spring Cloud新开微服务了。

于是,领导要求我出一套基于Spring Cloud的快速开发脚手架(近期开源)。在编写脚手架的过程中,也顺带总结一下以前在项目中遇到的问题:

使用Hystrix时,如何传播ThreadLocal对象?
我们知道,Hystrix有隔离策略:THREAD以及SEMAPHORE。

如果你不知道Hystrix的隔离策略,可以阅读我的书籍《Spring Cloud与Docker微服务架构实战》,或者参考文档:https://github.com/Netflix/Hystrix/wiki/Configuration#executionisolationstrategy
引子
by @极乐小程序商店 2017-12-15 18:39 查看详情
「文经课表小程序」当日课表界面实现方法 (zhuanlan.zhihu.com)
「文经课表小程序」当日课表界面实现方法
by @极乐小程序商店 2017-12-15 14:38 查看详情
现在流行小程序电子名片,你跟上节奏了么? (www.toutiao.com)
西装名片公文包,是以往商务人士的三大标配,洽谈业务前,先双手递上一张自己的名片,优雅又不失风度的开场,让后面的合作有了一个良好的开端。

但是,纸质名片不方便又容易丢失,已经不符合互联网信息时代的现代人快节奏的生活状态了,现在流行的是小程序电子名片。

什么是小程序电子名片呢,顾名思义,肯定与今年最火的小程序有关啦,小编推荐几款有意思的名片小程序,大家就明白了。
by @极乐小程序商店 2017-12-14 17:45 查看详情
手把手教你实现小程序中的自定义组件 (zhuanlan.zhihu.com)
手把手教你实现小程序中的自定义组件
by @极乐小程序商店 2017-12-14 12:01 查看详情
微信小程序--代码包压缩策略 (juejin.im)
微信小程序--代码包压缩策略
by @极乐小程序商店 2017-12-14 11:55 查看详情
Spring Cloud构建微服务架构:Hystrix监控面板 (zhuanlan.zhihu.com)
在上一篇《服务容错保护(hystrix断路器)》的介绍中,我们提到断路器是根据一段时间窗内的请求情况来判断并操作断路器的打开和关闭状态的。而这些请求情况的指标信息都是HystrixCommand和HystrixObservableCommand实例在执行过程中记录的重要度量信息,它们除了Hystrix断路器实现中使用之外,对于系统运维也有非常大的帮助。这些指标信息会以“滚动时间窗”与“桶”结合的方式进行汇总,并在内存中驻留一段时间,以供内部或外部进行查询使用,Hystrix Dashboard就是这些指标内容的消费者之一。

下面我们基于之前的示例来结合Hystrix Dashboard实现Hystrix指标数据的可视化面板,这里我们将用到下之前实现的几个应用,包括:

eureka-server:服务注册中心
eureka-client:服务提供者
eureka-consumer-ribbon-hystrix:使用ribbon和hystrix实现的服务消费者
由于eureka-consumer-ribbon-hystrix项目中的/consumer接口实现使用了@HystrixCommand修饰,所以这个接口的调用情况会被Hystrix记录下来,以用来给断路器和Hystrix Dashboard使用。断路器我们在上一篇中已经介绍过了,下面我们来具体说说Hystrix Dashboard的构建。
by @极乐小程序商店 2017-12-14 10:48 查看详情
Spring Cloud构建微服务架构:Hystrix监控数据聚合【Dalston版】 (zhuanlan.zhihu.com)
上一篇我们介绍了使用Hystrix Dashboard来展示Hystrix用于熔断的各项度量指标。通过Hystrix Dashboard,我们可以方便的查看服务实例的综合情况,比如:服务调用次数、服务调用延迟等。但是仅通过Hystrix Dashboard我们只能实现对服务当个实例的数据展现,在生产环境我们的服务是肯定需要做高可用的,那么对于多实例的情况,我们就需要将这些度量指标数据进行聚合。下面,在本篇中,我们就来介绍一下另外一个工具:Turbine。

准备工作

在开始使用Turbine之前,我们先回顾一下上一篇中实现的架构,如下图所示:
by @极乐小程序商店 2017-12-14 10:42 查看详情
用一天时间,开发上架一个天气小程序 (zhuanlan.zhihu.com)
用一天时间,开发上架一个天气小程序
by @极乐小程序商店 2017-12-13 14:29 查看详情
使用 python 做到马赛克拼图 (zhuanlan.zhihu.com)
死宅一枚。爬取5000张二次元妹子的图片,生成了头图。

接下来看看怎么实现的:

使用 Scrapy 框架爬取5000张二次元图
使用 opencv 批量格式化图片
将图片按照RGB值的均方根排序,实现效果
一、安装环境

1.安装 Scrapy 爬虫框架
by @极乐小程序商店 2017-12-11 13:59 查看详情
Spring Cloud实战小贴士:turbine如何聚合设置了context-path的hystrix数据 (zhuanlan.zhihu.com)
之前在spring for all社区看到这样一个问题:当actuator端点设置了context-path之后,turbine如何聚合数据?首先,我们要知道actuator端点设置了context-path是什么意思?也就是说,此时spring boot actuator的端点都有了一个前缀,比如:

management.context-path=/xxx
如果设置了上面的参数,那个对于收集hystrix数据的端点将变为:/xxx/hystrix.stream,如果我们还是拿上一篇Spring Cloud构建微服务架构:Hystrix监控数据聚合【Dalston版】中构建你的turbine应用,那么将会看到如下错误:
by @极乐小程序商店 2017-12-08 14:45 查看详情
Spring Cloud实战小贴士:Zuul统一异常处理(三)【Dalston版】 (zhuanlan.zhihu.com)
本篇作为《Spring Cloud微服务实战》一书关于Spring Cloud Zuul网关在Dalston版本对异常处理的补充。没有看过本书的读书也不要紧,可以先阅读我之前的两篇博文:《Spring Cloud实战小贴士:Zuul统一异常处理(一)》和《Spring Cloud实战小贴士:Zuul统一异常处理(二)》,这两篇文章都详细介绍和分析了Spring Cloud Zuul在过滤器设计中对异常处理的不足。同时,在这两篇文章中,也针对不足之处做了相应的解决方案。不过,这些方案都是基于Brixton版本所做的,在最新的Dalston版本中,Spring Cloud Zuul做了一些优化,所以我们不再需要做这些扩展就已经能够正确的处理异常信息了。那么,在Dalston版中,Spring Cloud Zuul中做了怎么样的修改以达到之前我们自己扩展的效果呢?
by @极乐小程序商店 2017-12-08 14:36 查看详情
聊聊Spring Cloud版本的那些事儿 (zhuanlan.zhihu.com)
继续昨天说的计划,解惑一下收到比较多的问题。

有朋友问“为什么在很多文章中,大家引用的Spring版本名字都不一样呢?比如:Angel.SR6,Brixton.SR5等等,它们都有什么区别呢?”,今天我们就聊聊这个轻松一些的话题,说说Spring Cloud版本的那些事儿。

版本命名

之前提到过,Spring Cloud是一个拥有诸多子项目的大型综合项目,原则上其子项目也都维护着自己的发布版本号。那么每一个Spring Cloud的版本都会包含不同的子项目版本,为了要管理每个版本的子项目清单,避免版本名与子项目的发布号混淆,所以没有采用版本号的方式,而是通过命名的方式。

这些版本名字采用了伦敦地铁站的名字,根据字母表的顺序来对应版本时间顺序,比如:最早的Release版本:Angel,第二个Release版本:Brixton,以此类推……
by @极乐小程序商店 2017-12-08 14:31 查看详情
Spring Cloud Security系列教程一:入门 (zhuanlan.zhihu.com)
本篇有一定的学习曲线,建议先花一点时间了解一下前置知识:

Spring Security:http://docs.spring.io/spring-security/site/docs/4.2.2.RELEASE/reference/htmlsingle/
OAuth2(重点),参考文档:http://www.ruanyifeng.com/blog/2014/05/oauth_2_0.html
Spring Security OAuth2,参考文档:http://docs.spring.io/spring-boot/docs/1.5.2.RELEASE/reference/htmlsingle/#boot-features-security-oauth2
熟悉以上前置知识后,我们进入Spring Cloud Security的学习。在本例中,我们来使用GitHub的账号和密码来登录我们编写的应用。

准备工作

(1) 前往https://github.com/settings/developers,点击“Register a new application”按钮,添加一个应用。点击按钮后,界面如下图所示。
by @极乐小程序商店 2017-12-08 14:07 查看详情
Spring Cloud构建微服务架构:服务网关(路由配置)【Dalston版】 (zhuanlan.zhihu.com)
在上一篇《Spring Cloud构建微服务架构:服务网关(基础)【Dalston版】》一文中,我们通过使用Spring Cloud Zuul构建了一个基础的API网关服务,同时也演示了Spring Cloud Zuul基于服务的自动路由功能。在本文中,我们将进一步详细地介绍关于Spring Cloud Zuul的路由功能,以帮助读者可以更好的理解和使用它,以完成更复杂的路由配置。

传统路由配置

所谓的传统路由配置方式就是在不依赖于服务发现机制的情况下,通过在配置文件中具体指定每个路由表达式与服务实例的映射关系来实现API网关对外部请求的路由。

没有Eureka和Consul的服务治理框架帮助的时候,我们需要根据服务实例的数量采用不同方式的配置来实现路由规则:
by @极乐小程序商店 2017-12-08 13:30 查看详情