基于Spring Cloud及K8S构建微服务应用

内容来源:2017年6月10日,广发证券蔡波斯在“Spring Cloud中国社区技术沙龙-深圳站”进行《基于Spring Cloud及K8S构建微服务应用》演讲分享。IT 大咖说(ID:itdakashuo)作为独家视频合作方,经主办方和讲者审阅授权发布。

阅读字数:1565 | 3分钟阅读

获取嘉宾演讲视频及PPT,请点击:http://t.cn/ReQJLUm

摘要

广发证券蔡波斯先生通过三个大方向来为我们分享基于Spring Cloud及K8S构建微服务应用。

基于Spring Cloud构建微服务

Netflix OSS- Eureka

Eureka服务启动注册的等待时间比较久,注销服务也需要等待,这是最终一致性。导致服务已经下线了,但是服务中心里还有,这时如果接到请求就会出现报错的情况。

Netflix OSS- Ribbon

Ribbon基于客户端的负载。传统的负载分为很多种,比如服务端的负载、客户端的负载、在host上统一的喷发等等。而基于客户端的负载好处就是分部,但本地的服务注册必须要和远程保持同步的状态。

Ribbon还提供了动态路由。有些用过其它框架的用户会质疑,Netflix默认提供的路由rule里,为什么不提供基于权重的路由方式呢?由于每个团队的开发背景不同,Netflix的服务基本上都附属在亚马逊云上,所以对于很多云端的服务强调无状态,在无状态的情况下基于权重的路由方式就没有什么意义了。

基于meta/tag可以使用Ribbon对server instance进行过滤,然后再选择。

Netflix OSS- Feign

Feign是在Ribbon的基础上对HTTP的增强。

Feign有一个默认的重试次数设置。错误重试一次,第一次等待100毫秒重试,最大等待1秒重试。

还有一个超时设置。超时设置分为链接超时和读超时,可以在代码里设置。它默认的connectTimeout为10秒,readTimeout为60秒,默认的retry为4次。外部nginx的proxy_connect/read_timeout设置要大于Feign的配置,才能起到fallback的效果。

Netflix OSS- Hystrix

Hystrix是由Netflix提出的对业界很重要的一个概念。

如果使用rest分隔进行微服务开发的话,对于Hystrix来说是服务调用失败的,这时就必须要标注Hystrixbadrequest,不然它会把这些异常计算在内,导致整个接口服务的熔断。

Hystrix还能通过线程组达到隔离的效果。

Netflix OSS- Gateway

Zuul的提出在当时是为了适配不同的协议格式,给移动端或PC端带来统一的入口。Gateway是有些类似微服务的概念。

作为网关,它可以添加或修改请求参数、header,修改响应body,通过zuul对动态路由进行操作。zuul负责网关层面的统一安全校验,虽然在每个微服务里做了数据权限,但是登录权限还是在网关层做的。而服务聚合如果在网关层做会导致业务逻辑紧密耦合,需要找其它更好的方案去做。

Spring Cloud

SpringCloud要有动态推送能力,否则手工做refresh太麻烦。

Yaml配置容易因为忽略重复key而出错,需要一个更加友好的工具,进行编辑、校验。

要有更丰富的格式在config的配置,比如json。

Slack alert

集成报警的好处就是在持续集成的时候直观地了解到服务部署的情况并传达出来。

基于docker及kubernetes部署微服务

万物docker化

非关键的服务或设备都可以跑在docker上。

十二要素

基准代码:一份基准代码,多份部署。

依赖:显式声明依赖关系。

配置:在环境中储存配置。

后端服务:把后端服务当作附加资源。

构建,发布,运行:严格区分构建和运行。

进程:将应用程序作为一个或多个无状态进程运行应用。

端口绑定:通过端口绑定提供服务。

并发:通过进程模型进行扩展。

易处理:快速启动和优雅终止可最大化健壮性。

开发环境与线上环境等价:尽可能的保持开发,预发布,线上环境相同。

日志:把日志当作事件流。

管理进程:后台管理任务当作一次性进程运行。

Kubernetes Cluster

因为我们相信google的能力,所以我们选择了Kubernetes。Kubernetes有自己的master,可以在master下面的每个node里跑docker。

对pod的服务发现机制

通过虚拟的ClusterIP地址、虚拟端口号,动态负载分发到后端pod。

SpringCloud vs k8s

SpringCloud和k8s有很多功能是重复的,k8s没有熔断功能,也可以通过附加的组件把它加进去。

BUILD+TEST+DEPLOY+MONITOR

Code review

Codereview是一个非常必要的过程,避免代码腐化。

自动化测试

自动化测试可以大大提高和保证质量。

对于线上来说,每隔几分钟就跑一下服务,以保证线上服务正常。

蓝绿部署

蓝绿部署和docker紧密结合。在云端空间足够的情况下,可以利用docker容器进行大规模部署。部署一个green并检查,然后生产流量指向进行canary测试,完成后再把流量导过来。

如果服务有bug,还可以趁blue没有销毁,把负载指向blue,尽量避免部署失败。

Netflix-OSS红黑部署

通过 Eureka实现服务的下线和上线。

K8s-rolling update

整个部署自动化,通过参数控制,保证rolling update服务尽可能是无损的。

我今天的分享就到这里,感谢聆听!

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,053评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,527评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,779评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,685评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,699评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,609评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,989评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,654评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,890评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,634评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,716评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,394评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,976评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,950评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,191评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,849评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,458评论 2 342

推荐阅读更多精彩内容