Flat Weather开发手记:后端服务篇(下)

docker-cloud-servers

在上一篇博客Flat Weather开发手记:后端服务篇(上)中,我讲述了为何需要为app开发后端服务,以及Flat Weather 应用后端Restful API的设计,这篇文章将会讲述这个设计是如何实现的。

  • 如何开发后端服务

首先那肯定得是技术活了,后端服务应用怎么写?如何生成Json?如何搭建服务器?这都是要考虑到的。考虑到我们的需求,很多编程语言都是可以的,Python,PHP,Java都是可以完成需求的。对于Flat Weather的后端服务,我选择使用Java开发,因为本来就第一次接触这个东西所以得选一个自己熟悉一点的语言,要不在短时间内会踩很多坑还拿不出来成果。

  • Java Spring Boot

Java有一个框架叫做Spring 框架,是为了解决企业应用开发的复杂性而设计的,使用这个框架,我们可以很容易的构建Rest服务,完全可以不用管中间层的问题,比如网络怎么传输,协议之类的东西,Spring框架会为我们操心这样的事。下图展示的是Spring框架的7个部分,与我们编写服务器端关系最大的就是Spring Web框架。

首先我们需要配置一个带Spring的项目,通过访问Spring框架的官网https://spring.io/

进入SPRING INITIALIZR https://start.spring.io/ 来生成一个项目:

我的项目选择可使用Gradle构建,当然也可以用Maven,看个人喜好了,Selected Dependencies添加了Web,和Rest依赖,因为需要构建Rest服务当然需要有相应的依赖。

之后点击Generate Project,下载到电脑上,从IDE导入就好了,这样,就有了一个带有Spring框架的Java工程。

Spring框架使用注解来表示每个类的功能。

进入到工程里,可以看到一个已经生成的FlatWeatherApplication类,在这个类的上面有一行注解@SpringBootApplication代表这个类是整个程序的进入点。

相应会用到的注解还有 @RestController 代表这个类是用来提供Rest服务的,和@RequestMapping(“”) 代表某个函数是处理某个请求的,和@RequestParam() 代表请求时的参数。

在这里不细说了,详细的教程可以看Spring官网上的文档,说的很详细: Building a RESTful Web Service

下图是Flat Weather整个后端服务的结构,整个项目很小,条理比较清晰:

编写完成后端服务之后运行一下:

看到这些就代表服务器已经开始启动了,在本地环境可以在浏览器上访问localhost看看有没有反应。如果报错的话可能是端口占用问题,Spring项目默认的端口是8080.

  • 服务部署

好了,既然写好了后端服务,那我们总不能把程序老是放在本地吧,得找一台服务器部署服务。怎么办呢,找一台Linux服务器,装上JDK,然后把生成的jar包发上去,然后运行,真是各种麻烦。最近几年,Docker容器服务火了起来。

  • Docker

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

换句话说,现在的网络应用交付已经可以不再使用单一的程序作为交付件而使用Docker容器作为交付件,这样的话程序就可以实现自动化批量打包,发布,非常方便,因为软件运行的依赖环境也集成在了Docker容器里。这样的话,只需要在服务器上部署docker,然后上传我们的docker镜像并且运行就可以了。听起来没什么的,可是,如果你编写的程序需要同时部署在数台服务器上的时候,docker方便快速的优势就会体现出来。

所以说为了使用Docker,我们得为开发的程序生成一个Docker镜像,Spring官方文档也提供了相关的教程。

为了方便,我使用了一个第三方容器云服务商——Daocloud。

在这里就给Daocloud打个广告吧,因为真的挺好用的,让我少操心了不少,以前在上海念书的时候上海GDG举办的活动Daocloud也给过赞助,当时还拿过一个他们的鼠标垫哈哈,从此记住了这个公司,知道我真的接触后端服务,开始成为Daocloud的用户。

Daocloud是一个容器服务提供商,我可以把我的代码上传到GitHub之类的版本控制系统中,Daocloud可以通过Git读取我的程序,然后构建成Docker镜像并且部署到我的服务器上,简直是一条龙服务,可以省下不少的时间。

当然,Docker的基础知识当然也是得学习一下的,比如如何编写Dockerfile,这都是生成Docker镜像前需要你根据需求手动编写的。以下是我项目中的Dockerfile,FROM语句规定了使用的环境,RUN代表运行一段脚本,EXPOSE代表暴露容器端口,ENTRYPOINT,容器的进入点。这些在本篇博客不再赘述,Docker的文档中都写的很清楚。

通过Daocloud,我很容易就可以实现持续交付。

  • 持续交付(Continuous delivery)

持续交付这是一个很火的概念,DaoCloud 为提供了 Docker 镜像的自动构建和自动发布功能, 当我在IDE编写完成后commit和push到Git后,使用特定Tag的时候,Daocloud会自动的将最新的代码生成Docker镜像并且发布到服务器生产环境中,真的是为运维省下了很多时间。

好了,这篇博客差不多就到这里,这些知识我从认识到后端服务第一版部署到服务器上只用了不到一天的时间,我在这方面还是个新手,很多认识肯定非常片面,经验的累积也不是一天的事情,开了个好头吧。

 

 

打赏

3 thoughts on “Flat Weather开发手记:后端服务篇(下)

Leave a Reply

Your email address will not be published. Required fields are marked *