本地运行微服务
在微服务架构出现之前,开发团队将整个应用程序构建、部署和运行为一个大的软件块。为了测试他们模块中的微小更改,不仅仅通过单元测试,开发人员必须构建整个应用程序。因此,构建需要很长时间。构建完成后,开发人员会将他们版本的应用程序部署到测试服务器。开发人员在远程机器或本地计算机上运行服务器。在后一种情况下,开发人员必须在本地计算机上安装和运行一个相当复杂的运行环境。
在微服务架构时代,开发人员编写、构建、测试和运行小的软件服务。构建速度很快。使用像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://: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停止它。
恭喜,您现在可以在本地计算机上构建、测试和运行服务!
您已准备好将服务打包到容器中。