> For the complete documentation index, see [llms.txt](https://aiopsteam.gitbook.io/aiops-tutorial/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://aiopsteam.gitbook.io/aiops-tutorial/background_knowledge/microservices/basic.md).

# 专业基础

专业基础是你需要不断进行精进的东西，在此教程中我们所提到的专业基础你需要在**长时间内**不断坚持学习。因此，在本教程中我们重点介绍你应该去学习的一些基础知识。

微服务是目前新兴的一种软件开发架构，其中开发微服务的框架以 Java 的生态最为丰富，我们推荐你了解一些生态中的基本框架，如果你的就业方向倾向于Java开发，你可以长时间的规划进行学习。但是，项目组的方向并不是使用java语言开发微服务系统，更多的是研究现在微服务系统所存在的问题。

{% embed url="<https://spring.io/projects/spring-boot>" %}

{% embed url="<https://spring.io/projects/spring-cloud>" %}

同时，目前，使用 Go 语言开发的与云服务相关的软件显著增多，Docker和K8s的兴起使得应用微服务架构的软件运维更加方便和智能，同时istio的兴起让服务治理更加方便。这三个都是微服务方向所必需的技能。

{% embed url="<https://www.docker.com>" %}

{% embed url="<https://kubernetes.io>" %}

{% embed url="<https://istio.io/>" %}

由于云原生的操作系统多为 Linux，故对于 Linux 的基本使用也是必须要掌握的。

## 编程语言相关

### Java

Java 生态完善，拥有丰富的框架资料和实践项目。本教程并不过多对此进行阐述。你应熟悉基本的 Java 编程，对于基本技术比较熟练，能够使用框架进行开发工作。我们认为你应该已经具备这些基本的技能。如果你从来没有接触过Java语言，我们推荐你根据下面的文档进行学习。然而对于项目组工作而言，学习Java语言并不是重点，你应合理地分配好时间。

#### 基础知识

如果你从来没有接触过Java语言，掌握好基本的 Java 语法是第一步。

* Java 编程思想
* Java 核心技术编程

#### 进阶

并发和设计模式在大型项目的框架中使用很多，虽然不一定会直接用到所有，但是熟悉它们一定受益匪浅。

* 并发编程：《Java 并发编程实战》
* 设计模式：《Head First 设计模式》，《设计模式之禅》
* 网络编程：《Java TCP/IP 编程》
* JVM：有兴趣可以读一读，《深入理解 Java 虚拟机：JVM 高级特性与最佳实践》，挑选看，对 Java 语言的理解一定会更深刻。

{% hint style="info" %}
建议没事看看书或者博客，以后实践中慢慢掌握。有些可能找工作的时候会问...
{% endhint %}

#### 框架和微服务

常用框架：Spring、SpringBoot、SpringCloud 全家桶。很多教程视频等，主要了解 Spring 的基本知识,熟悉 SpringBoot 的使用，重在 SpringCloud 的微服务组件的使用和理解。

### Go

Go 语言简洁高效，是天生的高并发语言，在云原生的许多基础应用当中得到使用。其一，熟练使用 Go 能方便的处理服务端的编程工作；其二，是阅读 Kubernetes，Istio 等云原生应用源代码的基本功，加深你对微服务的理解。你应该优先地掌握 Go 语言的使用，云原生的工作无法绕开 Go 语言。你可以根据下面的文档有选择地进行学习。

#### 基础学习---偏向于实践

* 《Go 语言编程》，许世伟，吕桂华等编著，版本较老，但是思想比较重要。
* 《Go 语言圣经》，即《The Go Programming Language》中文版
* 《Go 语言高级编程》--- 柴树彬，曹春晖。本书涵盖 CGO、Go 汇编语言、RPC 实现、Web 框架实现、分布式系统等**高阶主题**，针对 Go 语言有一定经验想深入了解 Go 语言各种高级用法的开发人员。

#### 练手项目

* 《Go 语言编程之旅：一起用 Go 做项目》，作者：陈剑煜，徐新华。面向项目实践，同时会针对核心细节进行分析。
* 尝试自己写一个 web 框架。资料：极客时间专栏---叶剑锋，手把手带你写一个 Web 框架

{% hint style="info" %}
练手项目很多，做出点东西就好，难易程度自选.
{% endhint %}

#### 框架学习

* gin 框架:用 Go (Golang) 编写的 HTTP web 框架。---[文档链接](https://www.topgoer.com/gin%E6%A1%86%E6%9E%B6/)
* go-micro：专注于简化分布式系统开发的微服务生态系统。
* Go chassis：华为开源的一个 go 语言微服务开发框架
* gRPC 框架：Google 公司开发的一个高性能、开源和通用的 RPC 框架，面向移动和 HTTP/2 设计。

{% hint style="info" %}
选择需要或者感兴趣的就好。
{% endhint %}

#### 微服务

利用 Go 语言实现微服务的搭建和部署,实际服务内容无所谓，重在实践体会。
