微服务从入门到实践
此系列教程已更新完毕,通过本系列教程的学习,你可以从理论、框架、开发、运维等各个维度对微服务架构有一个整体的认识:了解并掌握微服务原理、RPC 框架 Go Micro、服务接口开发流程、以及常见注册中心、集群部署、服务监控、服务追踪、服务治理、性能测试等微服务基础组件,从而能够独立操刀并主持中小型微服务系统的搭建。
概念篇和框架篇可免费阅读,实战篇及运维篇需要升级为订阅用户才能阅读,你可以点击下面的按钮升级为订阅用户(已经是订阅用户忽略):
概念篇(免费)
- 开篇:什么是微服务架构
- 微服务架构总体实现概述(总体框架图、一次完整的调用链路以及涉及到的组件)
- 微服务架构的优缺点和适用场景(适用于复杂系统,但也不是银弹,提高了系统的复杂度)
- 服务拆分的维度和拆分前的技术保障
框架篇(免费)
- Go Micro 框架初探及底层架构(微服务框架选型)
- 基于 Go Micro 构建第一个微服务接口(新手建议跳过看下一篇)
- 增补篇:基于 Go Module 管理依赖并将注册中心调整为 Etcd(第一个微服务接口最新版)
- 通过 HTTP 请求调用 Go Micro 微服务接口(基于 API 网关)
- 服务注册的底层实现(以 Go Micro + Consul 为例)
- 服务发现的底层实现(以 Go Micro + Consul 为例,分两部分实现:Registry 和 Selector)
- 微服务 API 网关实现(上):基本原理篇
- 微服务 API 网关实现(中):Micro API 网关架构模式和参数解析
- 微服务 API 网关实现(下):Micro API 网关初始化、请求监听及处理实现
- 通过 Micro Web 查看、测试所有微服务接口
- 通过 Micro Proxy 实现微服务之间的接口调用
- 微服务架构模式之 sidecar 模式(上):原理概述
- 微服务架构模式之 sidecar 模式(下):应用实例(基于 Micro Proxy 实现 PHP 微服务)
- 通过 Micro CLI 与 Go Micro 微服务进行交互(命令行)
- 通过 Micro Bot 与 Go Micro 微服务进行交互(机器人)
- Go Micro 组件底层实现源码剖析之 Registry 篇
- 注册中心篇(一):Consul 简介和原理概述以及启动模式分析
- 注册中心篇(二):基于 Consul 进行服务注册、删除和健康检查
- 注册中心篇(三):基于 Consul 进行服务节点查询和请求处理
- 注册中心篇(四):基于 Vagrant 模拟 Consul 集群实现服务注册与发现
- 注册中心篇(五):Etcd 简介及使用入门
- 注册中心篇(六):基于 Etcd 作为注册中心进行服务注册与发现
- 注册中心篇(七):Zookeeper 简介及安装使用入门
- 注册中心篇(八):将 Zookeeper 集群作为注册中心并集成到 Go Micro
- 注册中心篇(九):基于 Zookeeper 作为注册中心服务注册与发现的底层实现
- Go Micro 组件底层实现源码剖析之 Selector 篇
- Go Micro 组件底层实现源码剖析之 Transport 篇(上):服务端路由注册与请求监听
- Go Micro 组件底层实现源码剖析之 Transport 篇(下):客户端连接建立、请求发送与响应接收
- Go Micro 组件底层实现源码剖析之 Codec 篇
- 通过 Broker 组件在 Go Micro 中实现基于事件驱动的异步通信
- Go Micro 组件底层实现源码剖析之 Broker 篇
- 增补篇:数据格式序列化工具 Protobuf 简介及使用入门
- 增补篇:在 Go Micro 中集成 gRPC 网关对外提供服务
- 增补篇:基于 Thrift 框架构建 PHP 微服务接口示例
- 增补篇:基于 Thrift + Laravel 构建微服务(一):远程 RPC 调用
- 增补篇:基于 Thrift + Laravel 构建微服务(二):通过 Swoole 构建高性能服务端
- 增补篇:基于 Thrift + Laravel 构建微服务(三):基于 Zookeeper 进行服务注册和发现
实战篇(付费)
整体架构与技术选型
RPC 与 HTTP 接口
容器化入门
- 通过 Docker 容器化微服务接口(Dockerize)
- 引入 Go Micro 框架并通过 Go Modules 管理包依赖(包含通过代理加速包下载速度)
- 拆分客户端服务与 Dockerfile 多阶段构建
- 创建第一个微服务接口 —— 用户注册接口
- 引入 Docker Compose 编排多个容器 & 客户端远程调用服务端用户接口演示
用户服务
- 基于 JWT 实现用户认证接口
- 通过 Micro API 网关对外提供 HTTP JSON API
- 在 PHP 电商项目中基于 Micro API 网关调用用户微服务接口‘
- Laravel 客户端代码重构(上):基于微服务接口自定义邮箱唯一性验证规则
- Laravel 客户端代码重构(下):自定义 User Provider 和 Guard 组件实现基于微服务接口的用户认证
- 新增用户更新和密码重置相关服务接口
- 客户端用户退出功能实现及密码重置业务逻辑梳理
- 基于微服务接口重构客户端密码重置功能
- 创建独立的 GORM 模型类映射 Protobuf
- 基于 Broker + NATS 在客户端和服务端实现基于事件驱动的异步通信(上)
- 基于 Broker + NATS 在客户端和服务端实现基于事件驱动的异步通信(下)
- 基于微服务接口重构客户端用户详情页
商品服务
- 构建商品服务接口(一):商品主表
- 构建商品服务接口(二):商品关联表及关联查询
- 构建商品服务接口(三):在一个微服务中注册多个服务处理器
- 构建商品服务接口(四):基于 Etcd 作为注册中心并通过 Micro Web 测试服务接口
- 构建商品服务接口(五):客户端商品接口调用代码重构
集群部署与监控
- 基于 Docker Compose 搭建 Etcd 集群
- 基于 Prometheus + Grafana 构建可视化服务监控系统
- 基于 OpenTracing + Jaeger 构建分布式服务追踪系统(上):整体介绍 & RPC 内部服务调用链路追踪
- 基于 OpenTracing + Jaeger 构建分布式服务追踪系统(中):API 网关接口层服务追踪
- 基于 OpenTracing + Jaeger 构建分布式服务追踪系统(下):集成 Laravel + Go Micro 实现全链路服务追踪
- 基于 Docker Swarm 部署服务集群
负载测试
- 负载测试工具 Gatling 使用入门
- 使用 Gatling 进行负载测试(上):基于 Docker Swarm + Docker Compose 部署微服务
- 使用 Gatling 进行负载测试(中):基于 Maven + Galting 实现并发负载测试
- 使用 Gatling 进行负载测试(下):集群模式下的性能与系统负载情况
服务治理
- 通过健康检查保证服务可用性
- 服务治理篇(一):断路器模式与重试机制
- 服务治理篇(二):基于 Hystrix 实现服务熔断及监控展示
- 服务治理篇(三):Hystrix 熔断条件设置、重试机制实现及服务降级处理
- 服务治理篇(四):服务限流及其在 Go Micro 中的实现
- 服务治理对系统性能影响(上):在一个微服务中调用另一个微服务的接口
- 服务治理对系统性能影响(下):负载测试对比分析
分布式配置、日志、数据库
- 基于 Go Config + Etcd 实现集中化配置解决方案
- 基于 Logrus + GELF + Loggly 实现集中化日志解决方案
- 在 Go Micro 微服务中引入分布式数据库(上):CAP 与 BASE 理论
- 在 Go Micro 微服务中引入分布式数据库(中):CAP 在数据库集群中的应用及 MySQL 主从复制实现机制
- 在 Go Micro 微服务中引入分布式数据库(下):基于 Docker Compose 构建 MySQL 集群并实现主从复制和读写分离
测试、接口文档
基于 Kubernetes 部署应用
- 通过 Terraform 编排服务器资源(上)—— Terraform 简介和工作原理
- 通过 Terraform 编排服务器资源(下)—— 创建阿里云 OSS 和 ECS 实例
- 通过 K8S 进行容器编排(一):Kubernetes 简介、架构设计与本地安装启动
- 通过 K8S 进行容器编排(二):基于 Ingress 访问 Kubernetes 集群中的微服务
- 通过 K8S 进行容器编排(三):将微服务应用部署到 Kubernetes 并对外提供服务
- 通过 K8S 进行容器编排(四):通过 Kompose 转化将包含数据库集群的用户微服务部署到 Kubernetes
- 通过 K8S 进行容器编排(五):将前端 PHP 应用集群部署到 Kubernetes
项目代码
- Go Micro 服务端项目代码:https://github.com/nonfu/laracom
- PHP 客户端项目代码(基于 Laravel):https://github.com/nonfu/laracom-php
42 Comments
感觉基本上凉凉?
本教程的源码在那下载?