本系列文章知识很基础,主要是给前端小伙伴们尝试后端开发写的一点当心得体会。后端大佬能够别看了,估计会浪费你的时间。html
最开始入门就有尝试着手 Micro前端
结果发现步子迈大了容易扯到o,而后乖乖的退回去学习Gin,从基于Go的单体服务开始。可是攻坚战始终避免不了的,因而开始啃Micro这个架构。web
Micro是什么
Micro中文文档后端
我我的理解是简化微服务开发的架构。 组成部分:api
- API网关(API Gateway): API网关是请求的入口,把请求动态路由到具体服务。经过咱们预置的handlers插件,它能够处理http、gRPC、websocket、消息推送事件等等。
- 命令行接口(Interactive CLI):交互式的命令行接口。CLI经过终端能够描述、查询、直接与平台和服务进行交互。
- 服务代理(Service Proxy): 服务代理,基于Go Micro和MUCP协议构建的透明的代理服务。它将服务发现、负载均衡、消息编码、中间件、传输及代理插件转移到某一(具体服务所在)位置,同api不一样,它不暴露任何接口,只工做在内部环境,至关于桥接内部服务。
- 模板生成(Template Generation): 基于模板快速建立新的服务代码。
- SlackOps小机器人(SlackOps Bot): Slack小机器人插件,当它运行中服务中时,这个插件容许开发者经过Slack消息来操做平台。
- 管理控制台(Web Dashboard): 经过Web管理控制台,能够直接在Web页面上查看服务的运行状况,展现端点信息,请求与响应状态,甚至直接向服务进行查询。
- Go-micro框架(Go Framework): Go Micro框架是Micro的底层、核心。GO-Micro把分布式服务抽象,并提供简便的方式让你们构建具备高弹性的微服务。
附一张图 websocket
上面描述的就是 Micro Runtime 层级的内容架构
Micro 生态
- go-micro :基于Go语言的可插拔RPC微服务开发框架;包含服务发现、RPC客户/服务端、广播/订阅机制...
- go-plugins :go-micro的插件有etcd、kubernetes、nats、rabbitmq、grpc...
- micro :微服务工具集包含传统的入口点(entry point);API 网关、CLI、Slack Bot、代理及Web UI
如何才能使用Micro
- 使用
go-micro
编写服务。
- 使用
Micro
工具集来访问这些服务。
Micro包括了工具集用于查询和访问微服务。
- API Gateway,API网关是独立的http入口。
- Web Dashboard,用于可视化管理微服务。
- CLI,命令行接口。
- Bot,面向Slack或HipChat访问微服务的工具。
- New,用于快整生成服务模板,快速开发。
Go Micro能够帮你编写微服务。
Go Micro抽象出分布式系统负载均衡
- 集成服务发布、RPC、分发/订阅机制、消息编码
- 超时容错、重试机制、负载均衡
- 功能可扩展
- 可插拔的后台交换技术
Go Config
Go Config能够管理复杂的配置框架
- 动态管理 - 加载配置不须要重启
- 可插拔 - 能够选择从哪一个源加载配置:文件、环境变量、consul
- 可合并 - 针对多个配置源能够合并并重写
- 回退 - 能够指定当key不存在时设置值
- 可观察 - 能够查看配置的变更
Go Plugins
go-micro与micro的插件集socket
- 包含了绝大多数的后端技术
- grpc, kubernetes, etcd, kafka等等
- 通过生产环境验证
微服务设计理念
- 各服务要小,单一的业务目标应该是要细粒度,就像Unix的”只作一件事而且要作好”理念。
- 组织文化要包含部署与测试的自动化,这个下降管理与操做的负担。
- 设计原则要包含失败与错误,就像抗脆弱的系统。
微服务优势
- 弹性开发更简单 - 团队各自围绕不一样的业务需求,本身管理他们的服务。
- 更易于理解 - 微服务一般要更小些,一般只有1000行代码(国外的项目真有那么小么),或更少。
- 更适合频繁更新发布的系统 - 服务能够独立部署、扩展和管理。
- 加强的容错与隔离 - 彼此隔离以最小化彼此之间发现异常的影响。
- 执行力更强 - 经过独立的开发、发布、管理微服务,团队能够更快交付业务需求。
- 可复用的服务与快速原型 -微服务中由生而来的Unix设计理念,能够容许你们复用现有服务和更快地在它之上构建全新的功能。