Board logo

标题: 学轻量级微服务架构 (1) [打印本页]

作者: look_w    时间: 2018-12-14 19:07     标题: 学轻量级微服务架构 (1)

回顾 —— 微服务

    微服务是一种分布式系统架构,它建议我们将业务划分为更加细粒度的服务,并使每个服务的责任单一且可独立部署,服务内部高内聚,隐含内部细节,服务之间低耦合,彼此相互隔离。此外,我们根据面向服务的业务领域来建模,对外提供统一的 API 接口。微服务的思想不只是停留在开发阶段,它贯穿于设计、开发、测试、部署、运维等软件生命周期阶段。
    引用于《架构探险》

写代码

上一篇主要简单搭建了 Spring Boot 框架,写了一个简单的路由/hello,Spring Boot 的其它功能根据后续的学习,再不断完善,接下来我们开始下一个概念:

1. 微服务开发框架 —— Spring Boot 框架
2. 微服务网关 —— Node.js
3. 微服务注册与发现 —— ZooKeeper
4. 微服务封装 —— Docker
5. 微服务部署 —— Jenkins, GitLab
微服务网关 —— Node.js

    微服务网关是微服务架构中的核心组件,它是客户端请求的门户,它是调用具体服务端的桥梁。
    来自于《架构探险》

6302-40d22f1031b3b749.jpg

简单的说,微服务网关是一个服务器,也可以说是进入系统的唯一入口。这与面向对象设计模式中的 Facade 模式很像。微服务网关封装内部系统的架构,并且提供 API 给各个客户端。它还可能还具备授权、监控、负载均衡、缓存、请求分片和管理、静态响应处理等功能。

《架构探险》一书使用 Node.js 实现服务网关的重要特性之一:反向代理。

安装 Node.js 就不在这里描述了,如果是 Mac 系统,可以直接使用 brew (http://brew.sh/) 命令安装。

1. 安装 npm 国内镜像

npm install cnpm -g --registry=https://registry.npm.taobao.org

6302-a6562c854cf9f30d.jpg

2. 安装反向代理插件 Http Proxy 模块:

cnpm install http-proxy --save

3. 编写 app.js:

    var http = require('http');
     
    var httpProxy = require('http-proxy');
     
    var PORT = 1234;
     
    var proxy = httpProxy.createProxyServer();
    proxy.on('error', function( err, req, res) {
        res.end(); // 输出空白响应数据
    });
     
    var app = http.createServer(function (req, res) {
        proxy.web(req, res, {
            target: 'http://localhost:8080'  // 目标地址
        });
    });
     
    app.listen(PORT, function() {
        console.log('server is running at %d', PORT);
    });

执行 app.js 应用程序:

node app.js

6302-02b7553af1115021.jpg

我们修改上一篇写的 Spring Boot 应用,让访问 http://localhost:8080/ 可以直接访回「你好 叶梅树」。
6302-5d258628bd0a9a24.jpg

这样我们可以直接访问 http://localhost:1234/ 看看「反向代理」能不能起到作用,反向到: http://localhost:8080/,如下:
6302-4ffb2b34023e0445.jpg

这就表明了我们的反向代理起到作用了。




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0