本地运行微服务
在微服务架构出现之前,开发团队将整个应用程序构建、部署和运行为一个大的软件块。为了测试他们模块中的微小更改,不仅仅通过单元测试,开发人员必须构建整个应用程序。因此,构建需要很长时间。构建完成后,开发人员会将他们版本的应用程序部署到测试服务器。开发人员在远程机器或本地计算机上运行服务器。在后一种情况下,开发人员必须在本地计算机上安装和运行一个相当复杂的运行环境。
在微服务架构时代,开发人员编写、构建、测试和运行小的软件服务。构建速度很快。使用像Node.js这样的现代框架,不需要安装和运行复杂的服务器环境来测试单个服务,因为服务可以作为一个普通的进程运行。您不需要将您的服务部署到某个环境中仅仅为了测试它,因此您只需要构建您的服务,然后立即在您的本地计算机上运行它。
本模块涵盖了在本地机器上开发单个服务时涉及的不同方面。您不需要编写代码。相反,您将构建、运行和测试一个现有的服务:ratings
。
ratings
服务是一个用Node.js编写的、可以独立运行的小型 Web 应用程序。它执行类似于其他 Web 应用程序的操作。
- 监听它作为参数接收的端口。
- 在
/ratings/{productID}
路径上期待HTTP GET
请求,并返回与客户端为productID
指定的匹配产品评级。 - 在
/ratings/{productID}
路径上期待HTTP POST
请求,并更新与您为productID
指定的匹配产品的评级。
按照以下步骤下载应用程序代码,安装其依赖项并在本地运行它。
$ mkdir ratings $ cd ratings $ curl -s https://raw.githubusercontent.com/istio/istio/release-1.24/samples/bookinfo/src/ratings/ratings.js -o ratings.js $ curl -s https://raw.githubusercontent.com/istio/istio/release-1.24/samples/bookinfo/src/ratings/package.json -o package.json
浏览服务代码,并注意以下元素:
- Web 服务器的功能
- 监听端口
- 处理请求和响应
- 与 HTTP 相关的方面
- 头信息
- 路径
- 状态代码
- Web 服务器的功能
Node.js 应用程序是用 JavaScript 编写的,这意味着没有显式的编译步骤。相反,它们使用即时编译。因此,构建 Node.js 应用程序意味着安装其依赖项。将
ratings
服务的依赖项安装到您存储服务代码和包文件的同一个文件夹中。$ npm install npm notice created a lockfile as package-lock.json. You should commit this file. npm WARN ratings No description npm WARN ratings No repository field. npm WARN ratings No license field. added 24 packages in 2.094s
运行服务,并传入
9080
作为参数。然后应用程序将监听 9080 端口。$ npm start 9080 > @ start /tmp/ratings > node ratings.js "9080" Server listening on: http://0.0.0.0:9080
在您的浏览器中打开https://127.0.0.1:9080/ratings/7,或从另一个终端窗口使用
curl
命令访问ratings
。$ curl localhost:9080/ratings/7 {"id":7,"ratings":{"Reviewer1":5,"Reviewer2":4}}
使用
curl
命令的POST
方法将产品的评级设置为1
。$ curl -X POST localhost:9080/ratings/7 -d '{"Reviewer1":1,"Reviewer2":1}' {"id":7,"ratings":{"Reviewer1":1,"Reviewer2":1}}
检查更新后的评级。
$ curl localhost:9080/ratings/7 {"id":7,"ratings":{"Reviewer1":1,"Reviewer2":1}}
在运行服务的终端中使用
Ctrl-C
停止它。
恭喜,您现在可以在本地计算机上构建、测试和运行服务!
您已准备好将服务打包到容器中。