【go-micro实践】micro 微服务架构实践

Micro API使用 微服务架构是把应用解耦成逻辑上的相对隔离的服务,API网关则是提供单一的入口把服务的API统一起来。通过服务发现,Micro API以http方式,将请求动态路由到具体的后台服务接口。 Micro API是基于go-micro开发,所以它天然具备服务发现、负载均衡、编码及RPC通信的能力。因此,Micro API也是go-micro体系中的一个微服务,它自身也是可插拔的。 安装 通过命令go g... 阅读详情

Github完整代码地址
个人博客

微服务架构

micro拥有完整的微服务生态,使用它构建一整套完整的微服务架构。下图是作者在博客中给出的使用micro的微服务架构图。
在这里插入图片描述
使用micro框架提供的工具Micro API(命令 micro api 运行)即可启动启动一个API网关。

$ go get -u github.com/micro/micro​ 
$ micro api --help
NAME:
   micro api - Run the api gateway

USAGE:
   micro api [command options] [arguments...]

OPTIONS:
   --address 	Set the api address e.g 0.0.0.0:8080 [$MICRO_API_ADDRESS]
   --handler 	Specify the request handler to be used for mapping HTTP requests to services; {api, event, http, rpc} [$MICRO_API_HANDLER]
   --namespace 	Set the namespace used by the API e.g. com.example.api [$MICRO_API_NAMESPACE]
   --resolver 	Set the hostname resolver used by the API {host, path, grpc} [$MICRO_API_RESOLVER] 

micro工具是使用go-micro构建,所有同样具有服务发现等功能。如上图,micro api会把外部的http请求转发的内部Order API服务等,API服务内部实现会调用更底层的Service。一般我们将这里的API服务(Order API …)称为聚合层服务或者业务层服务,更加底层的Serivce称为支撑服务或者基础服务。

可以看出从逻辑上大致分为三层,网关层,聚合服务层,基础服务层,如图:
在这里插入图片描述
使用硬件或者软件负载均衡将流量分摊到API网关,由网关统一鉴权,然后再将请求路由到后端对应的服务上。相同的服务可以有多个实例,网关会按一定规则分摊到不同的实例,规则是通过插件可更改的,默认是随机。充值服务等聚合层的服务会根据业务逻辑调用底层的用户服务获取用户数据,调用账单服务创建账单等,与底层服务的调用采用RPC调用,micro采用protobuf来编解码,传输方式是可选的,mciro默认为http,可以使用grpc,tcp,nats,utp等。

所有的服务都可以多实例部署,go-micro已经帮我们处理好服务发现,RPC调用等问题,开发起来非常方便。当然我们还需要鉴权,熔断,链路追踪,监控等功能,才能真正的可以投入使用。micro框架的插件机制,可以非常方便的实现这些功能。

扩展micro自带的API网关

一般鉴权,熔断等功能都需要内置在API网关中,micro自带的网关并没有提供这些功能,但是我们可以自己写插件或者使用框架自带的插件来实现。计划为micro API网关增加如下功能:

  1. JWT鉴权
  2. Jaeger 链路追踪
  3. hystrix熔断dashboard展示
  4. prometheus监控

聚合层服务

聚合层服务主要是业务层逻辑,具体实现就是对外的HTTP API供前端调用。虽然micro API网关提供的将HTTP转换成内部RPC调用功能,但是写起来总觉得变扭。幸运的是micro同样提供gin等常用golang web 框架的集成方法,此处有作者的例子https://github.com/micro/examples/tree/master/greeter/api。使用这种方式,网关在工作时就不需要将外部HTTP请求转换成RPC方法,所以需要在启动mciro API网关增加一个参数:micro api --handler=http ,handler默认是rpc模式。

go-micro讲解--Go Micro编写微服务 一、什么是go-micro Go Micro是一个插件化的基础框架,基于此可以构建微服务。Micro的设计哲学是『可插拔』的插件化架构。在架构之外,它默认实现了consul作为服务发现,通过http进行通信,通过protobuf和json进行编解码。我们一步步深入下去。Go Micro是:一个用Golang编写的包一系列插件化的接口定义基于RPcGo Micro为下面的模块定义了接口:服务发现编解... 阅读详情

相关推荐

micro Cloud Foundry和micro Iron Foundry安装的那些事

8月的下半月和9月初,都在折腾micro Cloud Foundry和micro Iron Foundry。还真是“折腾”二字,现在就从刚开始接触这两者谈起,直至成功安装完毕。         在这里,就不再赘言Cloud Foundry了,还是先说一下Iron Foundry吧。在我看来,Iron Foundry就是一个为了使 .net 框架的应用可以在Cloud Foundry上push的D

木精灵的技术博客 4153

[golang 微服务] 7. go-micro框架介绍,go-micro脚手架,go-micro结合consul搭建微服务案例

go-micro框架介绍,go-micro脚手架,go-micro结合consul搭建微服务案例

资深系统架构,深耕高并发研发与 AI 大模型工程化落地。技术栈以 Python (AI/NLP/RAG/Agent) 与 Golang (高并发架构) 为双核心,兼具 PHP 大型应用经验。专注算法落地、复杂系统设计及团队技术赋能 6967

go micro在win10环境下搭建

环境 操作系统 win10 1909 golang go1.14.2 windows/amd64 micro v2@v2.6.0 protoc protoc-3.12.0-rc-1-win64 consul(可选) consul_1.7.3_windows_amd64 安装 protoc 下载对应版本的安装包https://github.com/protocolbuffers/protobuf/releases 解压后随便找

HJXINKKL的博客 2581

go 微服务框架_go微服务框架go-micro深度学习(二) 入门例子

上一篇帖子《go微服务框架go-micro深度学习(一) 整体架构介绍》简单介绍了go-micro的整体框架结构,这一篇主要写go-micro使用方式的例子,中间会穿插一些go-micro的源码,和调用流程图,帮大家更好的理解go-micro的底层。更详细更具体的调用流程和细节,会在以后的帖子里详细讲解。 例子的github地址: gomicrorpc 跑一遍例子,也就会明白个大概。安装所需要的环...

weixin_39612110的博客 259

「go-micro」学习笔记1——Micro 与 Go-Micro

新建服务 # 新建一个 helloworld 的服务 micro new helloworld 服务的启动与运行 # 在本地运行该服务并确保其正常工作. # 启动服务器 micro server # 设置为本地环境 micro env set local # 启动你的服务 micro run helloworld 服务状态 # 检查状态 micro status # 检查是否已注册 micro services # 检查日志 micro logs helloworld 结束服务 micro k

zd398900463的博客 1724

micro快速入门

micro 插件化构建 默认支持rpc+protobuf+consul micro安装 go get -u github.com/micro/micro 得到micro 的可执行 文件 复制文件sudo cp micro /bin/后重启reboot 下载插件 go get -u -v github.com/golang/protobuf/{proto,protoc-gen-go}...

磨镜台的博客 1860

[golang 微服务] 8.go-micro的负载均衡操作,go Web框(Gin,Beego)调用go-micro微服务

go-micro的负载均衡操作,go Web框(Gin,Beego)调用go-micro微服务以及Gin,Beego创建微服务客户端操作,以及Gin, Beego框架调用微服务go-micro案例

资深系统架构,深耕高并发研发与 AI 大模型工程化落地。技术栈以 Python (AI/NLP/RAG/Agent) 与 Golang (高并发架构) 为双核心,兼具 PHP 大型应用经验。专注算法落地、复杂系统设计及团队技术赋能 2021

MICRO和GO-MICRO

createdtime 20211124 updatedtime 20211126 author venki.chen 一、是什么 1. 定义,是做什么用的? go micro是什么? go-micro是框架,不是服务,但是使用它来编写微服务。 go micro详解 micro是什么? micro是基于go-micro编写,面向go-micro服务治理与生态的工具集,它包含很多服务和工具。 micro和go-micro之间的关系是什么? ①micro与go-micro是两个..

陈文小超的博客 2771

USB Micro-A、Micro-B 插头与 Micro-AB、Micro-B 插座,及其引脚定义

USB Micro-A、Micro-B 插头与 Micro-AB、Micro-B 插座,及其引脚定义

qq_29761395的博客 8875

go-micro微服务开发框架(中文指导)

介绍 Micro是一个微服务生态系统。目标是简化分布式系统开发。 技术正在迅速发展。现在云计算能够给我们几乎是无限的scale能力,但是采用现有工具来使 用scale能力仍然是很困难的。Micro试图去解决这个问题,开发人员首先关注。

Go-基于go-micro微服务实战配套AndroidiOS前端

基于go-micro 微服务实战 配套Android iOS 前端

Filee 视频转换实操教程:3 步拖拽搞定 GIF 转换、MP3 提取和字幕另存

想把视频里几秒做成表情包,又不想打开剪辑软件去研究时间线?想把 BGM 抠出来存成 MP3,或者把 MKV 里的字幕单独留一份 SRT?这些视频转换需求,Filee 靠一次拖放就能完成。它是一款免费、开源的离线文件转换器,覆盖 263 种格式,文件全程不出本机,也不用装 Office。读完这篇,你能在几分钟内从零跑通一次完整转换,并且知道哪些组合能跳过重编码、直接秒转。 [![Filee 视频转

gitblog_00165的博客 961

高云FPGA系列教程(1):FPGA和ARM开发环境搭建

至此,高云FPGA和MCU开发环境就搭建完成了,整体还是比较简单的,几乎是一键完成,下一篇文章我们进行实际的FPGA和MCU开发。本文是高云FPGA系列教程的第1篇文章。

whik1194的博客 6195

USB 3.1 Micro-A 与 Micro-B 插头,Micro-AB 与 Micro-B 插座,及其引脚定义

USB 3.1 Micro-A 与 Micro-B 插头,Micro-AB 与 Micro-B 插座,及其引脚定义

qq_29761395的博客 2903

基于FPGA的以太网设计(1)----大白话解释什么是以太网

基于FPGA的千兆以太网设计(1)----大白话解释什么是以太网

孤独的单刀 3877

华为自研 ERP、Oracle EBS 与 SAP 上线时系统配置思路设计差异深度分析

本文对比分析了华为自研ERP、Oracle EBS和SAP S/4HANA三大ERP系统在上线配置思路上的核心差异。从架构设计看,华为采用分布式微服务架构,SAP采用分层服务架构,Oracle采用集中式一体化架构;在模块配置上,华为以业务场景为导向,SAP基于行业模板,Oracle强调模块独立性;数据迁移方面,华为侧重业务规则清洗,SAP注重数据质量监控,Oracle依赖标准化工具;流程适配上,华为系统随流程调整,SAP在框架内优化,Oracle需定制开发;定制开发模式差异明显,华为采用插件化扩展,SAP使

金牌架构师 1455

使用 micro deploy 一条命令将 Go Micro 服务部署到任意 Linux 服务器

micro deploy 是 Go Micro v5.13.0 引入的服务部署能力:以 systemd 为进程管理、以 SSH 为传输通道,把本地开发环境中的服务一键推送到任意 Linux 服务器并纳入守护管理。读完本文,你将掌握从服务器初始化、命名部署目标配置到远程状态查看与日志跟踪的完整部署工作流,并了解其底层调用链与实现细节。 ## 背景:微服务易建,上线难 Go Micro 的日常开发

gitblog_00057的博客 953

三菱FX5U-PLC建立CClink的IO通讯

最新需要用三菱的FX5U的PLC搭建一个CClink通讯,PLC做主站,控制CClink从站的IO,下面2个输入模块AJ65SBTB1-32D,两个输出模块AJ65SBTB1-32T。3、在右侧的部件,选择网络模块:FX5-CCL-MS,CC-link主站模块。依次把加入两个AJ65SBTB1-32D,两个AJ65SBTB1-32T。7、基本设置,网络配置设置,链路刷新设置,设置好下面参数,应用。6、基本设置,网络配置设置,CC-Link配置设置。8、部件选择,模块,右键,添加模块标签。

wzz418550729的博客 1002

micro api入门

上一节学习了go-micro的入门。 这一节我们来熟悉micro的工具集里的api用法。 micro api网关 Micro的api就是api网关 API参考了API网关模式为服务提供了一个单一的公共入口。基于服务发现,使得micro api可以提供具备http及动态路由的服务。 下载micro工具集 go install github.com/micro/micro 该命令会在GOPATH/bi...

一个不靠谱的程序员 5588

NVIDIA GR00T SONIC - 人形机器人强化学习全身控制入门教程(一)

SONIC 是一个类人行为基础模型,它为机器人提供了一套从大规模人类动作数据中学习而来的核心运动技能。与为每个动作单独构建控制器不同,SONIC 将动作追踪作为可扩展的训练任务,因此单一套统一策略即可产生自然的全身运动,并支持多种多样的行为。         🎯 主要特点: 🚶 自然的全身运动(行走、爬行、动态动作) 🎮 支持实时 VR 遥操作 🤖 高级规划与交互的基础 📦 即用型 C++ 推理栈

2506_90492529的博客 842

看完这篇你就能讲解LLC软开关:一文秒懂 ZVS 和 ZCS 到底啥意思!

想要 MOS 管ZVS 好实现➜ 把工作频率保持在 fr1 或更高。想让整流二极管也ZCS 实现➜ 频率就别高过 fr1。设计磁性元件时,一定要计算好 Lr、Lm、Cr 的值,这直接决定你 fr、fr1 是多少!LLC 的软开关技术不是“魔法”,是电感电容+频率控制的精妙组合;fr1 就像黄金分割点,整流和开关都能“刚刚好”;不是所有软开关都能同时实现,要看你在频率曲线的哪一段!

weixin_43199439的博客 1546

go-micro教程

1.micro介绍 { 1.micro简介 Micro由开源的库与工具组成,旨在辅助微服务开发。 go-micro - 基于Go语言的可插拔RPC微服务开发框架;包含服务发现、RPC客户/服务端、广播/订阅机制等等。 go-plugins - go-micro的插件有etcd、kubernetes、nats、rabbitmq、grpc等等。 micro - 微服务工具集包含传统的入口点(entry...

Salted fish in hand, I have the world. 2673

解锁PyCharm+Deepseek:本地部署AI编程超能力

在本次探索中,我们成功地在 PyCharm 中实现了 DeepSeek 的本地化部署,这一过程虽然涉及多个步骤,但每一步都为我们开启 AI 编程大门奠定了基础。从安装最新版 PyCharm,确保我们拥有一个功能强大且兼容性良好的开发环境,到注册 DeepSeek 账号并获取 API Key,这是连接我们与强大 AI 能力的关键纽带。接着,在 PyCharm 中安装 Continue 插件并进行精细配置,让 DeepSeek 能够深度融入我们的编程流程。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 5550

go-micro框架介绍

介绍go微服务框架go-micro

js010111的博客 7373

DeepSeek 赋能招投标全流程智能化:多模态解析、知识图谱与投标文件自动生成实战指南(附完整代码与行业案例)

摘要:本文深入探讨DeepSeek技术在招投标领域的全流程智能化应用,通过整合自然语言处理(NLP)、多模态解析、知识图谱等核心技术,实现招标文件智能解析与投标文件自动生成。文中详细解析DeepSeek-R1模型的多模态处理机制、动态知识图谱构建方法及智能模板填充算法,通过完整代码实现展示技术细节。结合广某资源交易平台、山西XX"XX云"等典型案例,验证技术方案在提升招投标效率、降低人为错误方面的显著效果。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 1464

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Micro In Action基本介绍

这个系列聊一聊 Micro[1], 我们将以实际开发微服务为主线,顺带解析相关功能。从最基本的话题开始,逐步转到高级特性。 Micro 很强大,掌握后使用起来也相当便利。但它的演进速度非常快, 导致其文档有严重缺失和滞后。 很多功能没有文档;很多基本问题不得不去 GitHub 上提 issue 或去 Slack 里面问,又得不到什么反馈。最后, 查看源码成了唯一的学习途径。这对于使用者来说非常不友...

一个北漂的程序猿 1745

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

上一篇: Go-Micro 简介
下一篇: 【go-micro实践】micro API 网关增加JWT鉴权功能
惜朝_
博客等级 码龄10年 9粉丝 58原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值