Go语言的百万并发微服务公开课

互联网架构演进之路

单体架构->垂直架构->SOA架构->微服务架构
在这里插入图片描述
1,好比最开始创业公司要一个APP原型,即知足一个业务需求,全部功能放一块儿,就是单体架构
2,随着公司壮大,业务逐渐壮大,慢慢把功能就分开了,造成模块开发,好比MVC架构,也就是垂直架构
3,模块化也就意味着耦合度高,因此出现面向服务架构,就是将中心模块即共有抽取出来,也就是面向服务架构
4,服务愈来愈多,也会造成一张网,也比较麻烦,后来就造成微服务,也就是每一个模块变成一个服务,多个服务间相互调用
在这里插入图片描述
架构的选型,永远只有合适与不合适,永远没有哪一个更好html

微服务架构介绍

概况:
1,根据业务模块划分服务种类
2,每一个服务能够单独部署且相互隔离每一个服务都是单独的进程
3,经过大量的API调用服务
4,服务须要保证高可用web

微服务架构的优点剖析

1,松耦合
能够经过微服务提升效率,不一样的团队负责不一样功能,也能够用不一样语言实现,即松耦合
2,独立发布
每一个微服务均可以独立独立测试,独立发布,堪比Docker,持续集成,持续发布
3,快速迭代
4,故障隔离
个别服务的故障,不能阻碍其余服务的瘫痪docker

微服务架构的挑战

1,DevOps要求
就是运维、开发要求愈来愈高,同时运维多个服务
2,系统复杂性
多个服务,须要引进先进的技术,对于开发者要求加大
3,数据不一致性
原来全部APP只有一个数据库,可是对于微服务,每一个服务可能都有本身的数据库,因此要保证分布式数据库数据一致性
4,测试复杂性
多个服务可能须要多个测试,由于一个服务出现问题,其余服务可能就不能知足功能需求数据库

微服务架构选型

主要就是企业级语言:
Java系:Spring Cloud、阿里开源的Dubbo
Go系:Go Micro、Go Kit、Kite缓存

为何用Go语言作微服务

1,开发快
好比比Java开发快,Java台冗余,Go简洁
2,编译块
好比比C++编译快
3,执行快
4,部署简单架构

Go语言微服务架构最佳实践

在这里插入图片描述

微服务架构的6大核心点

1,API Gateway
设计微服务,必需要设计一个API网关,由于会存在一个问题:可能会将多个服务集成一块儿处理某个请求,好比订单任务,可能须要用户模块,商品模块,数据库模块等待,设计API网关就是封装系统内部架构,调用系统内部API,还要再API网关内部部署监控,服务发现,缓存系统,请求分片等。
2,进程间通讯
就是每一个微服务就是一个进程,多个进程间确定须要通讯,在通讯中也能够作不少事情:超时控制等好比在进程间通讯的应用:在微服务间经过判断请求成功,失败的次数,当失败数比值到一个阈值值,就会触发一个断路器,也就是熔断。也就是不必在作后续事情,能够在若干时间后,从新请求连接。
3,服务发现与注册
服务发现也就是在才开始寻求服务的时候,进行服务发现与注册
发现: 客户端发现与服务端发现
注册: 自注册与第三方注册
4,事件驱动的数据管理
数据库的选型与分布式数据库的管理。保证数据的一致性
5,微服务部署策略
能够采用云的方式进行部署,也能够一个虚拟机就是一个微服务,一个docker一个微服务。
6,微服务化改造
一般会采用渐进式的方式,好比将新的功能设计微服务,而后将原来系统的较重要功能重构为微服务,随时间推移,微服务架构逐渐显现。不可能直接将系统全部功能直接重构为微服务,不太现实。运维

Go学习历程

在这里插入图片描述
学习参考资料:
微服务的核心要点
Go微服务分布式