Go+Python双语言混合开发
第1章 【阶段一:Go语言基础】1~13章内容 试看
【阶段一】我们通过python与go的对比式讲解,系统掌握go语法,比如某个知识点在go语言中是如何的,同时在python中又如何使用?两者之间使用上有什么区别?通过对比学习的方式,一来帮助大家快速掌握go语言不墨迹,同时也能加深对python的认识,学习效率事半功倍,为后面的实战进阶夯实基础。【第一章:讲解go语言的特点,介...
共 23 节 (269分钟)
第2章 计算机组成原理快速扫盲
本章节快速讲解静态语言学习过程中最基础的计算机原理,包括各种进制以及ascii码表
共 3 节 (56分钟)
第3章 基本数据类型、运算符和表达式
本章节我们将全面的了解go语言的整数类型,浮点数类型以及这些基本类型的转换,我们将理解到go语言中的strconv包以及各种转换函数的使用,我们也将通过对比python和go的数据类型来加深两种语言之间的区别
共 6 节 (108分钟)
第4章 python的海象运算符和变量注解
本章节我们将介绍python中的新特性- 海象运算符,也会讲解python中的类型申明和函数的类型检查等静态语言具备的功能
共 3 节 (56分钟)
第5章 字符串的基本操作
本章节我们会了解到go语言中字符串相关的细节,包括中文字符串的长度问题、转义符、子串查询和统计、以及字符串的格式化输入和输出等常用的字符串相关功能
共 5 节 (74分钟)
第6章 条件语句和循环语句
本章节我们会了解到go语言中的条件语句和循环语句,除了基本的if和for循环以外还理解到中文在for循环中容易出现的问题,goto语句和switch等常用语句的基本使用,我们也会理解到python中为什么没有switch以及如何实现
共 6 节 (88分钟)
第7章 最常用的复杂数据类型 - map、数组、 切片
本章节主要讲解go语言中最常用的复杂类型:map、数组、切片, 通过本章节的学习我们不只是会使用go语言的这些基本类型还将了解到python和go语言在这些类型上的差异。比如go语言中切片的实现原理等
共 11 节 (192分钟)
第8章 go语言的利器- 指针
本章节我们将会介绍go语言区别于其他语言的利器-指针,除了指针的基本使用以外,还包括make函数和new函数的区别以及new函数的使用过程、nil和python中的none的区别等
共 5 节 (72分钟)
第9章 go语言的函数
go语言中的函数是静态语言中的一大亮点,基本上满足了python使用者的灵活性。例如:不定长参数、一等公民特性。本章节中我们还会介绍go语言函数中的defer机制以及panic机制和recover的异常处理等。通过对比python的args、kwargs以及go语言的参数也能加深我们对python的理解...
共 8 节 (185分钟)
第10章 go语言的结构体
go语言的结构体是go语言中完成面向对象特征的最重要类型,对于struct的学习和理解有助于我们理解go语言的设计理念,本章节我们会详细的介绍struct的各个细节,包括定义、组合以及结构体标签等
共 7 节 (156分钟)
第11章 go语言的接口
go语言的接口设计理念和python的鸭子类型设计理念是一致的,所以学习完本章节你将对python和go对于面向对象的理解有一个新的理解。我们也会对比讲解go语言的设计理念和面向对象语言的区别以及go是如何通过接口达到面向对象的各个主要特性...
共 8 节 (140分钟)
第12章 包管理和编码规范
go语言的包管理经历过两个重要的阶段,本章节我们将会了解到静态语言是如何进行包管理以及和python的包管理有什么区别,也会着重介绍go编码规范和python的编码规范
共 8 节 (128分钟)
第13章 go并发编程
go语言最大的特性是高并发实现非常简单而且并发性很高,本章节我们除了会讲解go语言并发编程中基本概念如:goroutine的基本使用、waitgroup、互斥锁、读写锁、channel以及deadlock出现的场景以外还会介绍另一个非常重要的知识点 - context。我们也会通过和python的协程对比来加深大家对协程的理解。...
共 12 节 (207分钟)
第14章 【阶段二:多语言通信基础 - grpc】14~17章内容
rpc是微服务开发的起点也很重要,本阶段我们会从0开始讲解rpc是如何开发出来的,然后通过rpc再过渡到grpc,课程会讲解xml-rpc、json-grpc、zero-rpc以及对这些rpc框架做一个分析和一个rpc框架应该如何封装才能达到我们的要求,是一个非常有亮点的阶段,同学们会明白:一个rpc框架应该要解决哪些问题?我们为什么要使用grpc...
共 7 节 (147分钟)
第15章 go的rpc体验
本章节中我们会采用和python不一样的方法了解go语言中的rpc开发体验,通过本章节我们将会体验到python和go语言的rpc调用,本章节我们会一步步基于go提供的基础rpc功能开始逐步封装达到grpc的使用效果,本章节是一个非常重要的章节,理解到本章节以后我们上手grpc会很快...
共 5 节 (95分钟)
第16章 grpc快速入门
本章节是grpc的快速入门章节,我们除了体验到python和go下的grpc基本使用以外,还会体验到go和python的grpc互相调用,通过本章节学习我们将体验到protobuf的基本定义、grpc的流模式使用
共 9 节 (168分钟)
第17章 protobuf和grpc进阶
前面的章节中我们已经入门了grpc的基本使用,本章节是一个非常重要的进阶过程,本章节的学习将为后续的微服务打下坚实的基础,本章节介绍了大量的protobuf和grpc进阶知识,如:protobuf的各种类型、grpc的metadata、拦截器、验证器、错误处理以及超时机制等等...
共 17 节 (248分钟)
第18章 【阶段三:需求分析、架构设计、orm和web框架基础】18~22章内容
该阶段主要目标:1. 详细的架构演进设计, 单体应用到微服务架构演进过程中要解决的问题?为什么需要微服务架构设计?go和python在微服务设计中分别承担的作用? 2. 学习 orm和web框架重要组件,我们会选择python作为和数据库最近的底层业务层,一方面python非常适合做业务接口开发,同时python的orm使用会非常的简...
共 3 节 (18分钟)
第19章 架构设计
本章节我们将理解到从单体应用到微服务架构设计的整个过程,以及微服务设计过程中需要解决的各个问题,比如服务注册和发现、配置中心、链路追踪等等大量的细节
共 7 节 (96分钟)
第20章 yapi的安装和配置
前后端分离开发的最大痛点是: 1. 接口管理麻烦 2. 前端等到后端的mock数据 3. 后端测试需要引入postman等测试工具,本章节我们介绍前后端开发过程中的利器:yapi,通过yapi的使用我们能解决这些所有的问题使得前后端开发完全独立...
共 5 节 (60分钟)
第21章 python的orm-peewee
本章节我们将会快速入门python下的流行orm-peewee,本章节主要解决python下的数据库访问,除了基本的crud基本操作以外,还包括多表查询、反向查询以及最后的如何避免n+1查询问题
共 8 节 (149分钟)
第22章 go的web框架-gin
本章节我们将会快速的体验到go语言下最流行的web框架之一-gin,我们除了讲解gin的基本功能以外,还会讲解gin中的一些难懂的点-中间件的原理解析。本章节的主要内容包括:gin的路由、表单验证、错误中文翻译、优雅退出等大量的细节...
共 17 节 (244分钟)
第23章 【第四阶段:第一个微服务 - 用户服务】23~25章内容
在本阶段我们将开始使用上阶段设计的微服务模式进行电商项目的第一个微服务 - 用户服务,我们会完成用户相关的接口, 用户登录、用户注册、用户列表等大量和用户相关的接口,该阶段完成以后我们不止能对外提供http接口供电商系统和后台管理系统调用,在python服务中完成对go提供grpc接口。该阶段还集成了实际生产环境中...
共 13 节 (192分钟)
第24章 web层开发-gin基础项目架构
本章节我们需要改造gin为基本的微服务web层架构服务,在本章节中我们我们除了需要解决基本的项目结构设计以外,还需要解决日志、grpc集成、配置文件管理等基础服务的完善。
共 10 节 (164分钟)
第25章 web层开发-用户接口开发
本章节我们除了上一个章节的基础功能如日志、配置文件、优雅退出以外我们还会涉及到更多的知识点: 用户登录、用户注册、短信发送、表单验证、自定义mobile验证、json web token的校验机制、图片验证码以及跨域问题等大量的开发细,通过本章节的学习我们将能够体验到第一个完整的微服务web层的基础结构和功能开发。...
共 12 节 (231分钟)
第26章 【阶段五:服务注册、服务发现、负载均衡、配置中心】26~29章内容
该阶段将解决微服务中最基础也是最重要的问题: 服务注册和发现、配置中心和负载均衡。我们将选择主流的微服务注册组件并将其集成到微服务中,分别集成到gin和python的grpc服务中,解决大量的ip地址和端口的配置问题,服务的健康检查, 大量的微服务配置,还能够发布和发现最新的配置,解决不用重启就能够解决配置的更...
共 7 节 (128分钟)
第27章 服务集成注册中心
本章节我们将前面开发的service层和gin开发的web层服务集成到consul的服务发现体系中
共 3 节 (56分钟)
第28章 负载均衡
本章节我们需要解决微服务中一个非常重要的问题-负载均衡,本章节首先会解决多个服务下的端口动态分配的问题,然后解决负载均衡策略和常用的负载均衡算法,最后讲负载均衡和注册中心集成进来并完成grpc下的负载均衡调用...
共 6 节 (84分钟)
第29章 配置中心
微服务管理除了管理服务实例以外,大量的微服务下的配置也需要一个统一的配置中心来解决,我们将会选择主流的nacos来完成配置的统一管理,以及如何解决在生产环境以及开发环境下的隔离。
共 8 节 (111分钟)
第30章 【阶段六:电商系统中商品、图片、库存、订单和购物车服务、分布式锁】30~38章
该整个课程中的比重是非常重要的,该阶段除了完成电商各大模块服务的基本接口以外,还解决了微服务中的图片文件的oss存储,通过前端直传的方式解决了将文件上传到阿里云的传输问题,解决了通过分布式锁完成库存的扣减问题,此外还实现了基于乐观锁和redis的分布式锁如何完成库存的扣减问题。通过本阶段的学习以后,我们除...
共 19 节 (227分钟)
第31章 商品服务-web等
本章节我们会使用上一节课中完成的底层微服务接口,在web层我们会完成客户端的调用和底层接口的转换,在本章节中我们除了完成底层的接口调用以外,还需要解决gin的优雅退出、yapi的接口调试,在本章中我们也会提供一个python脚本用于同步python和go的proto以及源码的生成。...
共 13 节 (211分钟)
第32章 阿里云的oss服务
微服务下我们无法使用简单的文件上传功能,我们需要使用独立的图片服务,本章节我们除了要使用阿里云上传图片以外,还需要解决阿里云下的oss直传问题,对于直传后的回调问题我们需要通过内网穿透技术来调试。
共 8 节 (117分钟)
第33章 库存服务
库存服务我们需要独立出来,库存服务的独立会产生出很多新的问题,本章节我们会详细介绍库存服务的重要性、以及库存的扣减问题和数据库事务的细节,并集成库存的设置接口
共 9 节 (92分钟)
第34章 分布式锁
本章节我们需要解决分布式系统下的一个非常重要的问题,也是面试中经常被问到的问题-分布式锁。分布式锁在微服务中有大量的应用,所以对于分布式锁的细节我们需要理解到而不是简单的会使用,大公司对分布式锁的要求较高,所以本章节我们会讲解到两个重要的实现手段: 1. 基于数据库的乐观锁 2. 基于redis的分布式锁,...
共 9 节 (144分钟)
第35章 订单和购物车服务-service层
本章节我们要解决订单和购物车相关的功能,订单是电商中的重点,也是难点,订单服务会牵扯到大量的其他微服务,包括商品、库存、用户等服务。订单服务的完整性要涉及到分布式事务,在后续的过程中我们会也会针对性的解决分布式事务以及订单超时和库存归还等细节。...
共 12 节 (157分钟)
第36章 订单和购物车服务-web等
本章节我们需要和前端联调订单和购物车服务接口,在web服务中我们还需要解决另一个重要的问题-支付宝支付,在本章节我们也会通过内网穿透的方式解决支付成功的回调细节。
共 7 节 (119分钟)
第37章 用户操作服务-service层
用户操作服务主要解决用户在电商系统中的重要行为:收藏商品、留言、收货地址管理等,经过前面的章节学习,后续的这些操作会变得很简单。
共 6 节 (86分钟)
第38章 用户操作服务-web等
通过底层的接口可以快速完成这些用户行为的接口调试
共 7 节 (80分钟)
第39章 【阶段七:分布式系统技术难点 - 分布式事务、幂等性机制】39~44章内容
在本阶段要解决分布式系统中非常重要的几个问题: 分布式事务、幂等性机制,然后继续完善电商系统中的重要细节, 比如库存的超时归还,订单创建过程中的分布式事务,同时介绍重试机制和重试机制,以及超时、重试以及网络问题带来的幂等性问题,这些都是分布式开发中的重要问题以及面试中会被经常问题的问题。【本章:电商...
共 3 节 (39分钟)
第40章 分布式理论基础和常见的分布式事务解决方案
本章节我们除了需要理解分布式理论:CAP理论和BASE理论以外,还需要了解到柔性事务、刚性事务、ACID等基本概念,在分布式系统下了解2pc、3pc、TCC和基于可靠消息的最终一致性事务。此外分布式事务是微服务中必须要解决的问题,也是难点,所以我们会介绍常用的分布式事务解决方案,如:2pc、TCC、基于可靠消息的最终一致性...
共 8 节 (116分钟)
第41章 消息队列在微服务中的作用和选型
本章节我们会讲解消息队列的作用是什么?而且对比目前主流的rabbitmq、rocketmq和kafka。通过消息队列的对比。我们需要决定应该选择什么消息队列以及如何为什么要选择rocketmq。
共 2 节 (31分钟)
第42章 rocketmq消息队列入门
本章节我们需要了解rocketmq的重要组件:broker、nameserver、consumer、producer、topic等。在本章节我们需要理解rocketmq中的两个重要功能:延迟消息和事务消息。
共 9 节 (88分钟)
第43章 实现基于可靠消息最终一致性的事务解决库存归还
普通的定时任务无法完美解决订单的定时取消功能,我们需要通过rocketmq的延迟消息解决库存的定时归还。同时为了解决订单新建过程中可能出现的各种问题下的库存扣减和归还问题保持数据的一致性。
共 16 节 (154分钟)
第44章 幂等性机制
由于引入了超时和重试机制,这些重试会引起订单重复,数据重复提交等问题,幂等性机制需要确保这些重复的提交只能保存一条数据,幂等性解决的方案较多如:唯一索引,查询、token机制、乐观锁和分布式锁机制等解决数据的重复提交,本章节我们需要对比各种方案并选择合适的方案来解决订单的重复提交。...
共 6 节 (57分钟)
第45章 【阶段八:微服务的高可用保障 - 链路追踪、熔断、限流、降级】45~48章内容
前面部分我们虽然解决了分布式系统的重要问题以及接口的基本功能开发,但是一个高可用的微服务框架我们还需要解决负载的微服务间的调用链的监控以及超时可能会带来的服务雪崩问题,通过引入链路追踪以及服务的熔断、限流等机制将会让我们的微服务变得更加可控以及可用性增强,在本阶段中我们会引入jaeger来进行链路追踪,使...
共 3 节 (28分钟)
第46章 第二章 链路追踪open tracing和jaeger
本章节我们会理解到链路追踪的标准、以及各种链路追踪的技术对比选型。我们除了需要理解到jaeger的架构以外还会理解到链路追踪的各个细节,包括span、spancontenxt、tracer等基本的概念,而且我们将会快速的体验到在go和python下的jaeger的开发体验。...
共 7 节 (65分钟)
第47章 gin和python集成jaeger
经过前面章节的学习我们已经明白了opentracing标准和jaeger,经过前面的章节学习,我们会理解到如何将jaeger集成到python和gin中,我们将会更加深刻的理解到grpc的metada机制以及如何集成到grpc中。经过本章节我们将会体验到复杂的链路中如何清晰的展示到jaeger的ui中。...
共 6 节 (82分钟)
第48章 熔断、限流 - sentinel
本章节我们首先会对比一下主流的hystrix和sentinel,通过对比我们选择sentinel作为系统的熔断器。微服务由于调用链路的问题,很容易出现服务雪崩这种严重的错误,本章节我们采用目前最流行的sentinel完成服务间调用的熔断和限流。本阶段中会理解到如何熔断,以及如何限流,通过熔断和限流可以确保一个长的链路不至于因为其...
共 11 节 (119分钟)
第49章 【阶段九:API网关】49~50章内容
本阶段我们来完成微服务开发的最后一站 - api网关,经过前面的开发我们已经开发出来了大量的微服务,这些微服务如何对外暴露统一的接口,以及如何解决这些服务的统一认证都将在api网关中实现,在本阶段我们会选择高性能的api网关-kong来完成从用户端到微服务端的调用以及接口管理。【本章内容:API网关技术选型和安装配置...
第50章 kong的基本功能
在本章节中我们将会体验到nginx和kong的对比,以及对kong进行技术细节理解,中我们将体验到kong的基本功能,包括url动态路由,jwt的认证配置,我们需要了解到如何将consul的服务注册中心集成到kong的体系中。
第51章 【阶段十:jekins自动化部署】51~51章内容
在课程的最后我们需要通过jekins来完成大量微服务的统一部署,微服务由于服务较多以及组件依赖较多,我们需要通过自动化部署工具来对这些服务进行统一的部署管理。【本章内容:jekins快速入门:本章节我们从jekins的基本功能介绍到jekins的安装配置到最后的jekins的基本功能使用、本章节我们将会理解到kong的基本功能,包括...
第52章 jekins自动化部署
本章节我们通过jekins的自动化部署完成大量微服务的部署