micro web

micro 功能非常强大,本文将详细阐述micro web 命令行的功能

阅读本文前你可能需要进行如下知识储备

本文应用环境

名称 描述
操作系统 win10
go version go version go1.12.7 windows/amd64
GOPATH E:\winlion\gopath
GOPROXY https://goproxy.io
G111MODULE on
命令行工具 cmder工具,可自行百度安装

命令行说明

micro web指令全部参数如下

  1. NAME:
  2. micro web - Run the web dashboard
  3. USAGE:
  4. micro web [command options] [arguments...]
  5. OPTIONS:
  6. --address value Set the web UI address e.g 0.0.0.0:8082 [%MICRO_WEB_ADDRESS%]
  7. --namespace value Set the namespace used by the Web proxy e.g. com.example.web [%MICRO_WEB_NAMESPACE%]
  • address 用来指定web访问地址,默认是8082端口,
  • namespace 用来指定开启web支持的服务空间,com.axample.web表示所有满足com.axample.web.*的应用都支持

典型应用场景

微信应用开发平台

A公司是一家小创业公司,a公司的主要业务是做微信小应用,目前他们公司只有一个域名www.xxx.com,A公司采用micro web 工具,可以不断迭代新应用到www.xxx.com域名下,比如昨天他们开发了一个应用demo1,外网用户访问地址https://www.xxx.com/demo1/,明天天他们开发了一个应用demo2,外网用户访问地址https://www.xxx.com/demo2/,最后这个平台长这样

服务名称 说明 访问地址
com.techidea8.web.www A公司的主域名 http://www.xxx.com/www/
com.techidea8.srv.wxmp A公司的微信服务,如签名、分享、菜单管理等 http://www.xxx.com/wxmp/
com.techidea8.web.attach A公司的资源上传服务 http://www.xxx.com/attach/
com.techidea8.web.pay A公司的支付服务 http://www.xxx.com/pay/
com.techidea8.web.account A公司的用户中心 http://www.xxx.com/account/
com.techidea8.web.article A公司的写作类平台 http://www.xxx.com/article/
com.techidea8.web.demo1 A公司的demo1应用 http://www.xxx.com/demo1/
com.techidea8.web.demox A公司的demox应用 http://www.xxx.com/demox/

a公司可以不断迭代业务,这个平台具备良好的扩张性。

分布式任务分发平台

Openwrite是一个面向技术人员的写作分发平台,用户在该平台一次写作,可以分发到·csdn/oschina/jianshu/juejin·等各个渠道,我们采用micro web开发如下微应用产品,后续可以不断迭代开发新渠道服务com.techidea8.channel*,不会影响现有业务。

服务名称 说明 访问地址
com.techidea8.web.www 网站首页 http://www.xxx.com/www/
com.techidea8.web.attach 图片、资源等上传服务 http://www.xxx.com/attach/
com.techidea8.web.account 用户中心 http://www.xxx.com/account/
com.techidea8.web.article 文档中心 http://www.xxx.com/article/
com.techidea8.web.channelcsdn csdn渠道应用 http://www.xxx.com/channelcsdn/
com.techidea8.web.channeljuejin 掘金渠道应用 http://www.xxx.com/channeljuejin/

实战hello,world!

业务梳理

假设我们需要实现类似于如下千人千面功能,具体应用场景如下

  • 首页应用www,展示常用基本信息
  • 推荐支持,不同的用户(uuid标识),显示不同的内容

服务设计如下

服务名称 说明 访问地址
go.micro.web.www 系统首页 http://127.0.0.1:8082/www/
go.micro.srv.recommend 推荐服务 http://127.0.0.1:8082/www/guess

获得源代码并运行

重要的事情说3次

micro web 源代码https://idea.techidea8.com/open/idea.shtml?id=7

micro web 源代码https://idea.techidea8.com/open/idea.shtml?id=7

micro web 源代码 https://idea.techidea8.com/open/idea.shtml?id=7

下载解压后位置为%GOPATH%\src\techidea8.com\microapp\doc\web

  1. $pwd
  2. E:\winlion\gopath\src\techidea8.com\microapp\doc\web
  3. $ls
  4. recommend/ www/

依次执行如下指令即可

  1. #切换到wwww目录下
  2. src\techidea8.com\microapp\doc\web\www>go run main.go
  3. #切换到recommend服务目录下
  4. src\techidea8.com\microapp\doc\web\recommend>go run main.go
  5. #启动web支持
  6. src\techidea8.com\microapp\doc\web\recommend>micro web --namespace=go.micro.web

界面如下

关于www应用细节

  • 创建应用框架
  1. >micro new --type=web techidea8.com/microapp/doc/web/www
  • 设计proto文件,这里需要请求一个Guess接口
  1. #E:\winlion\gopath\src\techidea8.com\microapp\doc\web\www\proto\recommend\recommend.proto
  2. service Recommend{
  3. rpc Guess(Request)returns(Response){};
  4. }
  • 通过proto生成go文件
  1. #E:\winlion\gopath\src\techidea8.com\microapp\doc\web\www\ 目录下
  2. >protoc --proto_path=. --proto_path=E:/winlion/gopath/src --go_out=. --micro_out=. proto/recommend/recommend.proto
  3. #
  • 调用猜你喜欢服务,核心代码如下
  1. //handler/handler.go
  2. //go.micro.srv.recommend 是后端猜你喜欢服务名称
  3. guessClient := recommend.NewRecommendService("go.micro.srv.recommend", client.DefaultClient)
  4. rsp, err := guessClient.Guess(context.TODO(), &recommend.Request{
  5. Uuid: request["uuid"].(string),//uuid是前端用户ID
  6. })
  • 猜你喜欢restful接口支持/www/guess
  1. //默认需要加上服务名前奏
  2. // register html handler
  3. service.Handle("/", http.FileServer(http.Dir("html")))
  4. // register call handler/www/guess
  5. service.HandleFunc("/guess", handler.Guess)
  • 启动web服务
  1. $micro web --namespace=go.micro.web
  2. #结果如下
  3. 2019/08/25 15:32:08 HTTP API Listening on [::]:8082
  4. 2019/08/25 15:32:08 Transport [http] Listening on [::]:57563
  5. 2019/08/25 15:32:08 Broker [http] Connected to [::]:57564
  6. 2019/08/25 15:32:08 Registry [mdns] Registering node: go.micro.web-32fafadb-a795-46bc-b4d8-ad9a30607a7e

关于推荐服务recommend细节

  • 创建应用框架
  1. >micro new --type=srv techidea8.com/microapp/doc/web/recommend
  • 设计proto文件,这里需要请求一个Guess接口
  1. #E:\winlion\gopath\src\techidea8.com\microapp\doc\web\recommend\proto\recommend\recommend.proto
  2. service Recommend{
  3. rpc Guess(Request)returns(Response){};
  4. }
  • 通过proto生成go文件
  1. #E:\winlion\gopath\src\techidea8.com\microapp\doc\web\recommend\ 目录下
  2. >protoc --proto_path=. --proto_path=E:/winlion/gopath/src --go_out=. --micro_out=. proto/recommend/recommend.proto
  3. #
  • 实现推荐服务,核心代码如下
  1. //handler\recommend.go
  2. //go.micro.srv.recommend 是后端猜你喜欢服务名称
  3. func (e *Recommend) Guess(ctx context.Context, req *recommend.Request, rsp *recommend.Response) error {
  4. log.Log("Received Recommend.Call request")
  5. //具体推荐算法实在这里实现的,
  6. //推荐算法得到结果后赋值给resp.Results
  7. rsp.Results = "这是用户[" + req.Uuid + "]的推荐内容"
  8. return nil
  9. }
  • 取消事件相关特性

我们这里不考虑事件,所以将事件相关特性取消,先一出subscriber目录,然后修改main.go

  1. main.go
  2. // 取消事件订阅支持
  3. //micro.RegisterSubscriber("go.micro.srv.recommend", service.Server(), new(subscriber.Hello))
  4. //取消事件发布支持
  5. //micro.RegisterSubscriber("go.micro.srv.recommend", service.Server(), subscriber.Handler)
  • 启动推荐服务
  1. $go run main.go

推荐阅读

扫微信二维码实现网站登陆提供体验地址和源代码

开源项目golang go语言后台管理框架restgo-admin

支持手势触摸,可左右滑动的日历插件

你必须知道的18个互联网业务模型

golang微服务框架go-micro 入门笔记2.2 micro工具之微应用利器micro web的更多相关文章

  1. springcolud 的学习(二).SpringCloud微服务框架

    为什么选择SpringCloud因为SpringCloud出现,对微服务技术提供了非常大的帮助,因为SpringCloud 提供了一套完整的微服务解决方案,不像其他框架只是解决了微服务中某个问题. 服 ...

  2. golang微服务框架go-micro 入门笔记2.3 micro工具之消息接收和发布

    本章节阐述micro消息订阅和发布相关内容 阅读本文前你可能需要进行如下知识储备 golang分布式微服务框架go-micro 入门笔记1:搭建go-micro环境, golang微服务框架go-mi ...

  3. golang微服务框架go-micro 入门笔记2.4 go-micro service解读

    本章节阐述go-micro 服务发现原理 go-micro架构 下图来自go-micro官方 阅读本文前你可能需要进行如下知识储备 golang分布式微服务框架go-micro 入门笔记1:搭建go- ...

  4. golang微服务框架go-micro 入门笔记1.搭建 go-micro环境

    微服务的本质是让专业的人做专业的事情,做出更好的东西. golang具备高并发,静态编译等特性,在性能.安全等方面具备非常大的优势.go-micro是基于golang的微服务编程框架,go-micro ...

  5. go微服务框架Kratos笔记(一)入门教程

    kratos简介 Kratos 一套轻量级 Go 微服务框架,包含大量微服务相关功能及工具 本文基于kratos v2.0.3,windows平台,其他系统平台均可借鉴参考 环境搭建 Golang开发 ...

  6. kratos微服务框架学习笔记一(kratos-demo)

    目录 kratos微服务框架学习笔记一(kratos-demo) kratos本体 demo kratos微服务框架学习笔记一(kratos-demo) 今年大部分时间飘过去了,没怎么更博和githu ...

  7. 【GoLang】go 微服务框架 && Web框架学习资料

    参考资料: 通过beego快速创建一个Restful风格API项目及API文档自动化:  http://www.cnblogs.com/huligong1234/p/4707282.html Go 语 ...

  8. 【GoLang】golang 微服务框架 go-kit

    golang-Microservice Go kit - A toolkit for microservices kubernetes go-kit_百度搜索 Peter Bourgon谈使用Go和& ...

  9. # go微服务框架kratos学习笔记六(kratos 服务发现 discovery)

    目录 go微服务框架kratos学习笔记六(kratos 服务发现 discovery) http api register 服务注册 fetch 获取实例 fetchs 批量获取实例 polls 批 ...

随机推荐

  1. mac 安装注册Charles

    软件去官网下载安装即可. 下载地址:https://www.charlesproxy.com/download/ 适用于Charles任意版本的注册码Charles 4.2.7 目前是最新版,可用. ...

  2. python 脚本接受参数

    import os import sys print(sys.argv) bogon:Desktop macname$ python3 test2.py deesws.json dede.json s ...

  3. Linux常用命令简述--dirname与basename

    dirname 获取父目录 basename 显示最后的目录名或文件名 .dirname [root@liang ~]# dirname /etc/httpd/ /etc [root@liang ~] ...

  4. 记一次vue+vuex+vue-router+axios+elementUI开发(三)

    项目用到了状态管理工具 Vuex  中文文档:https://vuex.vuejs.org/zh/guide/ 大家都知道,vue中可用props将父组件的数据传递给子组件,但是有个问题,子组件一般不 ...

  5. proxmox之cloud-init

    Cloud-Init支持 Cloud-Init是事实上的多分发包,它处理虚拟机实例的早期初始化.使用Cloud-Init,可以在虚拟机管理程序端配置网络设备和ssh密钥.当VM首次启动时,VM内的Cl ...

  6. Hotspot对象的内存布局

    对象头 class oopDesc { ... private: volatile markOop _mark; union _metadata { Klass* _klass; narrowKlas ...

  7. 20190815网络与信息安全领域专项赛线上赛misc WriteUp

    目录 签到题 题目内容 使用工具 解题步骤 七代目 题目下载地址 使用工具 解题步骤 亚萨西 题目下载链接 使用工具 解题步骤 24word 题目下载链接 使用工具 解题步骤 感想 几星期前报了名却完 ...

  8. Gamma阶段第四次scrum meeting

    每日任务内容 队员 昨日完成任务 明日要完成的任务 张圆宁 #91 用户体验与优化https://github.com/rRetr0Git/rateMyCourse/issues/91(持续完成) # ...

  9. Video Architecture Search

    Video Architecture Search 2019-10-20 06:48:26 This blog is from: https://ai.googleblog.com/2019/10/v ...

  10. 制作镜像文件工具packer

    openstack镜像制作要在openstack上创建虚拟机,必然要使用到虚拟机镜像. 对于普通用户,可以使用已经创建好的虚拟机镜像.一般是操作系统官方构建并提供的. 某些用户可以有自己独特的需求,需 ...