原创文章,欢迎转载。转载请注明:转载自IT人故事会,谢谢!
原文链接地址:『高级篇』docker容器来说微服务导学(一)
跟我学过初级和中级的小伙伴,感谢有你们的支持哈哈,我开始高级篇了。这次设计到springboot 和spring cloud,重点是落地,之前的CICD涉及的面有老铁说最后镜像部署没说,我说高级一定补上的!
微服务
微服务最近几年比较火,不了解也没关系,可以理解成一个项目的模块吧,微服务运行在docker容器里面,如果管理docker容器用服务编排框架k8s。
为什么要继续高级篇
镜像生产环境的自动化部署
- 不同行业IT系统更新频率
纵向的是系统的更新频率,黄色的是半年以上更新一次,绿色的部分是3-6个月,蓝色的部分是每个月都要更新。横向的是行业的细分:制造业,金融行业,互联网行业,交通物流行业,零售业。其中互联网的更新频次最高92%的服务每个月都要更新。其中应该有很多服务一个月要更新多次。我相信如果一个行业如果要有竞争的优秀,更新频率一定是在不断的提高的。这就会倒逼越来越多的企业加入转型,docker微服务就是方向。
- IT系统支撑所存在的问题
看2个比重最大的问题,系统复杂性越来越高,IT运维管理复杂,构建一个全功能团队困难。应用频繁的升级开发团队会非常的痛苦:企业业务系统经过多年的发展,系统往往非常庞大,复杂度非常的高,要改动其中任何一个小功能都需要部署整个应用,敏捷开发和快速的服务根本无从谈起,传统行业在传统的IT建设过程中往往会使用不同的技术,这就存在了技术之前的诧异很大,管理和运维就比较复杂,随着这些问题的凸显,企业向微服务进行转型需求越来越强烈。
- 微服务架构落地情况
6%的企业应用了spring cloud开发框架,9%采用了dobbo和其他的微服务框架,51%考虑云原生的架构方向转型(公有云,私有云),因此可以看出来绝对部分企业有转型的需求的。
- 2018年和2017年docker的使用情况对比图
docker从2017年的7% 升级了4个百分点达到11%。考虑使用docker的应用的越来越多,特别是100台服务器以上的。
- 2017年的docker情况
企业的关注度才不断的升高。docker的使用在不断的普及,容器的成熟,对微服务的落地提供了很多的基础,轻量化的容器是微服务的最佳环境。微服务在容器的环境下,在加上服务编排框架持续集成变成可能。
- 为何存在
腾讯,阿里,京东,包括新浪 都在使用docker。通过图片的数据和案例说明:docker,服务编排,微服务值得我们去学习。可能在不久的将来将会是每一位开发和运维的老铁不得不了解的技术。
高级具体说些什么?
- 微服务
- 传统架构演变微服务
- 微服务架构的架构图优势的不足
- 微服务带来的问题和解决方案
从实战的角度出发
1.传统服务和微服务对比的方式来进行学习。
- 问题和业界的解决方案(springboot + spring cloud)
- 很多老铁都是搞java的,了解下springboot 和 cloud跟微服务,跟docker的关系,跟服务编排框架的关系。
- 微服务实例开发
通过业务场景。从0开始一行不拉的开发完整个项目,微服务的开发有一个深刻的体会,服务开发过程中我们会用到,dubbo,spring boot ,spring cloud,网关,thrift。
体会到:dubbo的远程调用,thrift跨语言的接口调用,spring boot快速开发。
- 几个微服务,微服务需要怎么来划分。
- 他们之前的关系,他们是如何划分的。
- 部署前的准备
- 服务docker化,调整配置,制作成docker镜像。
- docker-compose,运行在docker容器中,保证容器间的正常通信。
- docker仓库,harbor搭建,push镜像。
- kubernetes,mesos,swarm,初级我讲了mesos,中级主要讲了swarm,高级重点还是k8s。其实他们都是学会其中一种,基本都是庞统的。
- 服务编排
- 了解mesos,画出架构图,集群环境,部署微服务
- 了解swarm,集群环境,调整服务,部署服务
- 压轴k8s,通过2017年docker承认k8s后,服务编排的领导地位,2017年爆发增长,企业上docker首选k8s,门槛太高了,光服务搭建都能压死人。了解概念,基础集群搭建,小试牛刀,服务发现,认证授权,部署微服务。
- CICD和Devops
jekens 和gitlab 中级欠大家jekens这次补给大家。目的是从代码提交到流程更新全部自动化。
环境参数
- 做java的常用的IDEA
- 消息服务用python3.6.3
- RPC框架Thrift0.10.0 跨语言
- Ubuntu-16.04
- Docker-18.03
- kubernetes-1.9.0
技术储备
- 熟悉java 后台开发
- 熟悉docker基本命令,镜像容器什么的
- 熟悉linux基本操作
PS:整体把握微服务,清晰理解微服务的各种概念,如果开发微服务,技术栈之间的微服务通信,怎么样把一个服务运行在docker容器里,服务之间是如何建立连接的,多种编排框架下服务的编排和服务的发现扩容。docker绝对是你以后必经只选。来我们一起努力,成为更好的自己。
网友评论