使用golang构建高可用微服务-概述
前言
由于一直从事PHP的开发工作,虽然一直调侃说PHP是世界上最好的语言(在构建web应用中,无论是从开效率还是入门难度来说,PHP有着无法撼动的地位),但是
毕竟是脚本语言,运行效率、垃圾回收等方面都是其瓶颈,对于高并发计算、socket和websocket编程,效率和稳定性都欠缺,当然这和代码的质量有很大关系.后来接触到swoole,算是比较好地解决了上述问题.
从2017年开始接触到golang,总算发现了一个完美世界.
go语言的优点:编译型语言,性能接近于C/C++,比起PHP高不止一个层次;语法简单,仅25个关键字;天生的多核计算优势,低成本goroutine协程轻而易举地实现高并发应用;如果有个好爸爸也是优势的话,其来自google;更多的语言优势这里就不一一列举,真的不能不爽了!
一路从PHP走来,再用go语言做应用,大部分都是单体应用,逻辑藕合高,特别是发展到一定规模的应用,加上开发者良莠不齐,很容易牵一发而动全身,使用微服务去构建高可用的服务,大势所趋.
因此,本系列文章围绕使用golang构建高可用微服务这个话题去开展,结合实际的开发,边学边用,一步一个脚印深入.
前期准备
1. 有golang编程基础
本系列文章是基于有golang编程基础,有过实际开发项目的前提去展开,最好有一定的架构经验.
2. 了解RPC、SOA、SOCKET通信等概念
这些概念是构建微服务的基础,打好基础后更容易上手
3. 了解Docker
Docker的存在,在一定程度上让golang火热起来,同时在云计算虚拟化部署上,起到关键性作用.
内容编排
1.入门
了解什么是微服务,使用原生go语言构建一个最简单的微服务.
2.Go-Micro介绍和使用
Go-Micro是一个微服务开发框架,后续的架构都是基于该框架
3.Protobuf介绍和使用
微服务重要的通信协议,由于其高性能和支持跨语言等特性,被广泛应用于微服务通信中.
4.服务发现和治理
服务发现和治理,在"高性能高可用"中,发挥重要的作用
5.日志跟踪和监控
在单体应用中,我们可能打文本日志就能记录重要的信息,很方便地排查问题和还原现场,但是在微服务当中,由于存在多服务调用,一个请求可能会经过多个服务处理,要定位问题到底出在哪个环节,日志跟踪和监控必不可少.
6.Docker介绍和使用,使用Docker部署微服务应用
以最简单的方式去介绍Docker和使用Docker部署我们的微服务应用
7.DevOps部署我们的微服务应用
由于微服务框架结构复杂,如何自动化地去构建和部署我们的应用,DevOps又是怎样实现的?
8.消息队列和分布式事务
使用一个消息队列服务去处理微服务间通信和事务处理,解决拆分后的数据一致性难题.
9.服务降级和熔断
高并发和高可用,是服务的重点和难点,构建的微服务应用,如何避免雪崩效应和维持服务健康状态,是一个无法忽略的难题.
几点说明
- 如无特殊说明,所有内容均在MacBook上开发和调试
- 基于golang v1.11版本开发和调试
- 由于个人爱好钓鱼,准备拿自己在线的一个钓鱼资讯网站开刀了
- 个人能力水平有限,难免存在错误和纰漏,欢迎各路英雄留言指正
- 本系列文章同步发表于个人博客和csdn博客、简书上,欢迎保留版权的转载
- 本篇原文:http://www.learf.com/155.html
- 经济学人使用Golang构建微服务历程回顾
- golang 使用Beego + Swagger构建更好的API服务
- 使用docker scratch 空镜像构建golang docker 服务
- Go实战--golang中使用Goji微框架(Goji+Mongodb构建微服务)
- 在 WebSphere Application Server 和 Microsoft .NET 中使用 WS-AtomicTransaction 构建事务 Web 服务
- jersey POST (使用 Jersey 和 Apache Tomcat 构建 RESTful Web 服务)
- 使用 Rational Application Developer 构建 HTTPS Web 服务,第 1 部分:Web 服务与 Web 服务客户机
- 使用jetty 嵌入式构建 https 服务--自定义keystore 和加密方法
- 快速构建Windows 8风格应用23-App Bar概述及使用规范
- 使用 Spring 3 MVC HttpMessageConverter 功能构建 RESTful web 服务
- WCF系列(一) -- 完全不使用配置文件构建和使用WCF服务
- 使用 Silverlight 2 和 WCF 构建服务驱动的应用程序
- 使用keepalived构建高可用mysql-HA
- 使用Nginx+KeepAlived构建高可用的负载均衡系统
- 使用ArcSDE构建地理要素与表的关系类并发布带有关系数据表的要素服务
- 使用 ServiceStack 构建跨平台 Web 服务
- [SharePoint2010开发入门经典]10、使用SPS2010构建面向服务的应用程序
- 使用ASP.NET Web Api构建基于REST风格的服务实战系列教程【三】——Web Api入门
- WCF系列(二) -- 使用配置文件构建和使用WCF服务