进入大三下学期的后半段,大学阶段的理论课程应该已经修得八九不离十了,在这个时间点迎来系统综合实践这门课,做为培养计划的一门新课程,咱们很是但愿了解大家对于课程的但愿,请写下你对这门课的认识和你理想中的这门课程是怎么样的。
感受和大多数人同样,在上课以前应该都不是很了解这个课程,只是知道这们课是时间方面的课程,学分在实践课种也算是比较多的了,在以前觉得就是综合之前学习过的理论课程来作一个综合的实践,跟以往的实际课同样日常跟着老师作,最后考试完成,不过博客园班级二维码发下来我以为这门课就没那么简单了……毕竟上学期不但有软工实践,还有SDN,两门课程属实是挺让人头大,因此但愿这门课不会像以往那么困难吧,特别是不要像sdn那门课程同样处处都是晦涩难懂的概念,说真的那门课虽然结束了,可是我了解到的东西并很少,真正理解的内容也不多,并且一直停留在配置环境配置环境,但愿这门课的东西能够更多地用在学习内容上(考研党强烈但愿这门课不会那么耗时……),而不是环境的配置上面,而且在最后能够有所收获,并在之后的学习生涯中可以有所帮助。linux
第一次做业咱们将接触一种新型的软件架构——微服务(也许部分同窗已经有所了解)。你们要作的是学习并了解该技术,微服务是什么,有什么特色,相较于传统的软件架构,它有什么优缺点,它是怎样部署的。
维基百科上给出的定义是:微服务(Microservices)是一种软件开发技术,是面向服务的架构(Service-Oriented Architecture,SOA)的变体,微服务架构将应用程序组成一系列松散耦合的服务集合。在微服务体系结构中,服务是细粒度的,协议是轻量级的。微服务的本质在于分布式、去中心化。简单理解就是分解应用程序的功能,把一个大型服务拆分红不少小服务,使它们彻底彼此独立,而且能够相互通讯,拆分以后的微服务架构以下图所示。
docker
微服务架构的特色:
1)针对特定服务发布,影响小,风险小,成本低
2)频繁发布版本,快速交付需求
3)低成本扩容,弹性伸缩,适应云环境数据库
相较于传统的软件架构的优缺点
i.优势
1.每一个服务足够内聚,足够小,代码容易理解这样可以聚焦一个指定的业务功能或业务需求。
2.开发简单,开发效率提升,一个服务可能就是专注的只干一件事情。
3.微服务是松耦合的,是有功能意义的服务,不管是在开发阶段或部署阶段都是独立的。
4.微服务可以被小团队单独开发。
5.微服务能使用不一样的语言开发。
6.易于和第三方集成,微服务容许容易且灵活的方式集成自动部署,经过持续集成工具,如Jenkins、Hudson、bamboo。
6.微服务易于被一个开发人员理解、修改和维护,这样小团队可以更关注本身的工做成果。无需经过合做才能体现价值。
7.微服务容许利用融合最新技术。
8.微服务只是业务逻辑的代码,不会和HTML/CSS或其余界面组件混合。
9.每一个微服务都有本身的存储能力,能够有本身的数据库,也能够统一数据库。
ii.缺点
1.开发人员要处理分布式系统的复杂性
2.多服务运维难度,随着服务的增长,运维的压力也在增大
3.系统部署依赖
4.服务间通信成本
5.数据一致性
6.系统集成测试
7.性能监控ubuntu
它是怎样部署的
1.一台主机部署多服务实例
2.每一个主机一个服务实例
3.松耦合,可独立部署vim
docker做为微服务的一种十分典型的表明技术,咱们要作的是:学习了解docker的相关概念(容器、镜像等),了解docker、docker compose、Dockerfile、docker machine、Swarm、k8s是什么,是作什么用的,心中有概念便可;
docker:docker是一个开源的应用容器引擎,开发者能够打包本身的应用到容器里面,而后迁移到其余机器的docker应用中,能够实现快速部署。若是出现的故障,能够经过镜像,快速恢复服务。bash
docker compose: 用于定义和运行多容器 Docker 应用程序的工具。服务器
Dockerfile:是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。架构
Docker Machine 是一种可让您在虚拟主机上安装 Docker 的工具,并可使用 docker-machine 命令来管理主机。运维
Docker Swarm 是 Docker 的集群管理工具。它将 Docker 主机池转变为单个虚拟 Docker 主机。 Docker Swarm 提供了标准的 Docker API,全部任何已经与 Docker 守护程序通讯的工具均可以使用 Swarm 轻松地扩展到多个主机。curl
k8s是一个编排容器的工具,其实也是管理应用的全生命周期的一个工具,从建立应用,应用的部署,应用提供服务,扩容缩容应用,应用更新,都很是的方便,并且能够作到故障自愈,例如一个服务器挂了,能够自动将这个服务器上的服务调度到另一个主机上进行运行,无需进行人工干涉。
sudo apt-get update
在这个过程当中出现了过程超级慢的状况,这是因为linux系统自带的镜像源都在国外,国内用户下载或更新软件会比较慢,有时是很是慢,因此国内某些机构,如大学,研究院所,就在国内建了linux的镜像源服务器供国内linux用户使用,详细能够参考该连接
设置完成后发现速度快了特别多,接下来就按照步骤来安装
sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ gnupg-agent \ software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) \ stable"
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
sudo docker run hello-world
输出helloworld
But接下来又遇到了问题,就是在演示hello world的时候一直出现如下的错误
Error response from daemon: Get https://registry-1.docker.io/v2/: net/http:……
出现Docker镜像报错参考了如下的文章,记住vim前面最好加个sudo,掉进坑里了,必定时刻要记得sudo!
终于获得结果,以下图所示
成功输出hello world
获取镜像
若是咱们本地没有 ubuntu 镜像,咱们可使用 docker pull 命令来载入 ubuntu 镜像:
$ docker pull ubuntu
启动容器
如下命令使用 ubuntu 镜像启动一个容器,参数为以命令行模式进入该容器,进入交互界面:
$ docker run -it ubuntu /bin/bash
查看全部的容器:
$ docker ps -a
使用 docker start 启动一个已中止的容器:
$ docker start [id]
中止一个容器
中止容器的命令以下:
$ docker stop <容器ID>
中止和重启对应id的容器,在查看全部容器结果以下
删除容器
删除容器使用docker rm命令:
$ docker rm -f
在进入容器的时候家使用docker exec命令,由于此退出容器终端,不会致使容器的中止
列出镜像列表
咱们可使用 docker images 来列出本地主机上的镜像。
获取镜像。这里以httpt为例
sudo docker pull [须要的镜像]。
$ docker rmi hello-world
因为docker进不去,因此我用了以前注册的阿里云镜像,建立一个仓库
经过他的操做指南完成镜像的推送,能够看到仓库里已经有了这个镜像