> For the complete documentation index, see [llms.txt](https://long0419.gitbook.io/mileworks-microservice-kit/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://long0419.gitbook.io/mileworks-microservice-kit/master.md).

# 一、引言

针对主流微服务技术相关技术kong 网关 、 Spring Cloud 、ServiceComb 、docker 、kubernets 等技术总结和整套学习路线推荐。同时**推荐每个关键步骤可以选择的技术点**，方便用于后期项目、产品研发使用。理解这里面介绍的项目思想是最首要的。

首先要说明的是微服务是一种**架构思想，跟语言无关**。所以不要说微服务=spring cloud， spring cloud只是基于微服务思想，然后用java进行复写出来。其实spring cloud 有局限性，因为他只能用java语言进行开发。实际上微服务思想中更多是**希望兼容来自不同语言的异构系统**。

因为16年底接手云监控产品，这个产品当时在技术选型上选择了微服务架构去扭转整个业务数据。当时参考了[What are microservices?](https://microservices.io/)整片文章中的思想，~~同时结合了当时公司人员的技术安排~~，java、php、reactjs、python、go 各个语言都有负责人员，也非常契合文章中所提到的微服务的架子，于是大胆选择了[Kong](https://konghq.com/install/)作为微服务的网关来整合不同语言的异构特性。大致项目结构如下图所示：![](/files/-LepHCrETTywWfb0WJ4h)

产品通过探针采集数据（datadog、snmp、vcenter/kvm、iot等）丢到整个Golang 的代理层中进行数据处理和归并统一，然后丢到KONG网关中进行数据的扭转，分发到不同的业务数据系统中（php、java），最后丢到队列中进行数据的存储介质中opentsdb 、mysql、es、redis。项目预览：

![](/files/-LepHCrGy90_H6RwrMmj)

### 优点：

因为整个项目依赖探针数据，同时整套系统不存在事务处理，更多是依赖数据传输和展示。所以选择Kong API 网关作为整个数据的网关中间件。在网关中进行所有后台（php、java）的逻辑api。【其实如果项目不是那么复杂，而且前后端分离通过类似JWT做token验证的话，这个方案真的不错！】

![](/files/-LepHCrILWq5bHYf_7EJ)

### 缺点：

项目涉及到语言go、java、php、reactjs、python语言是非常考验团队整体的技术能力的。同时项目整体庞大，涉及到的中间件繁多，整体架构异构特别多，最终导致项目部署、维护、运维各个方面，非常麻烦（即使使用了docker容器技术等）！如果人员离职等因素，最后整个项目导致了瘫痪状态。

## 说明：

建议特别是大型web项目中，使用微服务是比较合理方便的，特别还不涉及到数据库事务的时候更是如此（当然存在事务也有办法）。这里针对后台语言来说我这里推荐**golang + java** 来做整体的语言选择，golang去做底层数据处理、网络io等，java去处理业务数据。

后续结合自己这段时间微服务学习走过的坑进行总结，并且告知后期使用哪些技术手段来进行开发。
