Story about microservice migrating from cloud host to Kubernetes - 01


目录

架构、备忘和注意事项

理解IoT事业部网站产品的技术栈

  • 前端 – Node.js

    在Node.js诞生之前,Javascript主要用来做客户端的开发。
    在Node.js诞生之后,Javascript可以用来做完整的后台开发。
    这其中的原理很简单,Node.js的解析器(runtime)就相当于一个Chrome浏览器,并且对于OS拥有全部访问权限。
    运行在浏览器上的Javascript受限于浏览器的权限,而运行在Node.js中的Javascript可以完全操作OS。

    所以,简单来说,就是现在你可以用Javascript来写跟Python、Java一样功能的APP啦。

    IoT网站项目前端使用的框架是风头正热的Vue.js

  • 后端 – Spring Boot

    Spring Boot是基于Java编程语言的微服务框架。
    我们来看下它的组件逻辑图。

    Spring Boot Microservice

    可以看到关键的组件有(括号内是实际使用的软件名):

    • Gateway – zuul
    • Service Discovery – eureka
    • Config Service – config server

拓扑

新架构(逻辑拓扑)

我不了解Spring框架,但是作为运维方,我们比较关心的有这些问题:

  • 在Spring Boot自己的API Gateway之前,还有我们的Nginx,如果做HA架构,是否只需单纯地增加反向代理的后端节点?

    答案是肯定的。注册到后端微服务框架自身的gateway服务中的业务服务有自己的名字,只要前端对应地访问相应的名字就行。

  • HA架构下,是否可以有多个Service Discovery、Config Service组件同时工作?

    答案是肯定的。现在作为registry组件的方案一般有Eureka, Zookeeper, Consul。
    他们都有各自的集群实现方式。

单节点情况下部署的情况

IoT website on one server

多节点情况下HA部署的情况

可以把上图的Nginx抽出来单独放(在生产环境下应该放在一个public子网),作为一个整体的网关入口,前端服务和后端服务(这些都放在private子网)都用这个网关做负载均衡。

e.g.

前端:

  • server_name: registration.product-1.com ==> 192.168.100.1:3001, 192.168.100.2:3001
  • server_name: registration.product-2.com ==> 192.168.100.1:3002, 192.168.100.2:3002

后端gateway:

  • server_name: aggregated-api-gateway.group.com ==> 192.168.100.1:3001, 192.168.100.2:3001

前端访问后端:

  • 访问product-1后端服务 ==> aggregated-api-gateway.group.com/gateway/product-1-user/
  • 访问product-2后端服务 ==> aggregated-api-gateway.group.com/gateway/product-2-user/

旧架构(物理拓扑)(待补充)

不补充了,乱七八糟……
参见部署product-3德国站时总结的笔记。


备忘和注意事项

  • IoT事业部的软件架构中,所谓新旧架构,指的是物理拓扑上的概念,不是逻辑拓扑上的概念。

    i.e.

    新架构:每个产品使用自己独立的基础设施。

    旧架构:有些组件会部署在共用的基础设施上。

  • 旧架构下的网站列表(待补充)

    • Ahome.com
  • 新架构下的网站列表(待补充)

    • registration.B.com
    • registration.C.com
  • 旧的网站项目使用的各个组件的配置文件的仓库

    • 内网环境共用的Service Discovery服务 – 10.20.0.152:8761

    • 其Config Service服务 – 10.20.0.152:8763

      http://gitlab.company.com.cn/system_operation/erp-config/tree/master

      在这里看到注册进来的具体服务所使用的配置文件。我猜Spring Boot的业务逻辑是:

      1. Service Discovery启动。
      2. Config Service和Service Discovery建立会话。
      3. 其他服务和Service Discovery连接,“注册”到Service Discovery中。
      4. 可能是由Service Discovery告诉Config Service哪个服务注册进来了,你去拉取(git pull)这个服务的配置文件然后丢给他吧。

文章作者: 少年G
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 少年G !
评论
  目录