本地运行微服务

在微服务架构出现之前,开发团队将整个应用程序构建、部署和运行为一个大的软件块。为了测试他们模块中的微小更改,不仅仅通过单元测试,开发人员必须构建整个应用程序。因此,构建需要很长时间。构建完成后,开发人员会将他们版本的应用程序部署到测试服务器。开发人员在远程机器或本地计算机上运行服务器。在后一种情况下,开发人员必须在本地计算机上安装和运行一个相当复杂的运行环境。

在微服务架构时代,开发人员编写、构建、测试和运行小的软件服务。构建速度很快。使用像Node.js这样的现代框架,不需要安装和运行复杂的服务器环境来测试单个服务,因为服务可以作为一个普通的进程运行。您不需要将您的服务部署到某个环境中仅仅为了测试它,因此您只需要构建您的服务,然后立即在您的本地计算机上运行它。

本模块涵盖了在本地机器上开发单个服务时涉及的不同方面。您不需要编写代码。相反,您将构建、运行和测试一个现有的服务:ratings

ratings 服务是一个用Node.js编写的、可以独立运行的小型 Web 应用程序。它执行类似于其他 Web 应用程序的操作。

  • 监听它作为参数接收的端口。
  • /ratings/{productID}路径上期待HTTP GET请求,并返回与客户端为productID指定的匹配产品评级。
  • /ratings/{productID}路径上期待HTTP POST请求,并更新与您为productID指定的匹配产品的评级。

按照以下步骤下载应用程序代码,安装其依赖项并在本地运行它。

  1. 下载服务代码包文件到一个单独的目录中。

    $ 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
    
  2. 浏览服务代码,并注意以下元素:

    • Web 服务器的功能
      • 监听端口
      • 处理请求和响应
    • 与 HTTP 相关的方面
      • 头信息
      • 路径
      • 状态代码
  3. 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
    
  4. 运行服务,并传入9080作为参数。然后应用程序将监听 9080 端口。

    $ npm start 9080
    > @ start /tmp/ratings
    > node ratings.js "9080"
    Server listening on: http://0.0.0.0:9080
    
  1. 在您的浏览器中打开https://127.0.0.1:9080/ratings/7,或从另一个终端窗口使用curl命令访问ratings

    $ curl localhost:9080/ratings/7
    {"id":7,"ratings":{"Reviewer1":5,"Reviewer2":4}}
    
  2. 使用curl命令的POST方法将产品的评级设置为1

    $ curl -X POST localhost:9080/ratings/7 -d '{"Reviewer1":1,"Reviewer2":1}'
    {"id":7,"ratings":{"Reviewer1":1,"Reviewer2":1}}
    
  3. 检查更新后的评级。

    $ curl localhost:9080/ratings/7
    {"id":7,"ratings":{"Reviewer1":1,"Reviewer2":1}}
    
  4. 在运行服务的终端中使用Ctrl-C停止它。

恭喜,您现在可以在本地计算机上构建、测试和运行服务!

您已准备好将服务打包到容器中

这些信息对您有用吗?
您对改进有任何建议吗?

感谢您的反馈!