快速开始
此页面你将学会如何使用 Phanes 快速构建一个微服务项目
前置需求
- Git — 最新版本(必需)
- Golang — 大于1.19(必需)
- protoc — 最新版本(非必需)
- protoc-gen-go — 最新版本(非必需)
- protoc-gen-go-grpc — 最新版本(非必需)
- protoc-gen-micro — 最新版本(非必需)
前置知识
- Go 语言编程基础
- 微服务基础
什么是微服务?
微服务是一种开发软件的架构和组织方法,其中软件由通过明确定义的API 进行通信的小型独立服务组成。 这些服务由各个小型独立团队负责。 微服务架构使应用程序更易于扩展和更快地开发,从而加速创新并缩短新功能的上市时间什么是服务注册/服务发现?
(如:etcd, consul 等) 服务注册是指微服务在启动时,将自己的信息注册到注册中心的过程;服务发现是指查询可用的微服务列表及网络地址的机制 服务配置:动态修改服务配置,并将其推送到服务提供者和服务消费者而不需要重启服务。 健康检查:注册中心使用一定的机制定时检测已注册的服务,如发现某实例长时间无法访问,就会从服务注册表移除该实例什么是配置中心?
「配置中心」,顾名思义,就是用来统一管理项目中所有配置的系统。 虽然听起来很简单,但也不要小瞧了这个模块。 如果一个中型互联网项目,不采用配置中心的模式,一大堆的各类配置项,各种不定时的修改需求,一定会让开发同学非常头疼且管理十分混乱。什么是 rpc?
分布式计算中,远程过程调用是一个计算机通信协议。该协议允许运行于一台计算机的程序调用另一个地址空间的子程序,而程序员就像调用本地程序一样,无需额外地为这个交互作用编程。RPC是一种服务器-客户端模式,经典实现是一个通过发送请求-接受回应进行信息交互的系统什么是分布式?
分布式系统是计算机程序的集合,这些程序利用跨多个独立计算节点的计算资源来实现共同的目标。 它也被称为分布式计算或分布式数据库,并依靠不同的节点通过公共网络进行通信和同步。 这些节点通常代表独立的物理硬件设备,但也可代表单独的软件进程或其他递归封装的系统。 分布式系统旨在消除系统的瓶颈或中心故障点。开始一个新的项目
1.安装 Phanes
命令工具 → 2.创建项目 → 3.生成代码 → 4.安装依赖 → 5.修改配置 → 6.运行你的项目.
没错,仅需6个步骤,你就可以运行你的微服务项目
1.安装命令工具
phanes
工具此项目的灵魂,一切由此开始…
go install github.com/phanes-o/phanes@latest
2.创建项目
使用 phanes 创建项目非常简单,这里我们创建一个 hello
项目,命令如下:
phanes new hello
3.生成代码
生成代码依赖配置文件 generator.go
此文件也是默认配置文件, 具体如何配置请查看 代码生成配置→
你可以直接复制此配置直接尝试生成 User 相关代码默认配置点这里👈
// Yeah! it's so simple.
package main
import (
"time"
"github.com/lib/pq"
)
//project:hello
type User struct {
Id int64 `rule:"Parameter;Required"`
Name string `rule:"Parameter;Required"`
Password string `rule:"Parameter;Required"`
Phone string `rule:"Parameter"`
Roles []pq.StringArray `rule:"Parameter"`
CreatedAt time.Time
UpdatedAt time.Time
}
phanes gen
或者指定配置文件生成:
phanes gen -c gen.go
生成了什么代码
phanes 提供了基本的 crud 操作的整套代码(HttpApi、业务、model、entity、数据存储相关代码) 生成代码依赖配置文件 gnenrator.go 此文件名称也是默认配置4.安装依赖
别急,项目启动之前,我们还需要拉去项目的依赖项
go mod tidy
5.修改项目配置
最后一步,真的最后一步,就是修改项目启动配置,就可以启动项目了, 具体配置请查看 项目配置文件→
默认配置点这里👈
name: hello
env: dev
version: 0.1.0
auto_migrate: true
http:
listen: :7771
validate_trans: zh
#如果你只想快速体验,可以将 db 和 broker 配置注释掉
db:
- addr: host=127.0.0.1 user=postgres password=root dbname=auth port=5432
sslmode=disable TimeZone=Asia/Shanghai
pwd: root
type: postgres
user: root
- addr: 127.0.0.1:6379
pwd: ""
type: redis
user: ""
broker:
addr: amqp://coco:kk123123123@127.0.0.1:5672/
pwd: ""
type: rabbitmq
user: ""
# otel config
collect:
log:
# DebugLevel = -1, InfoLevel = 0, WarnLevel = 1 ErrorLevel = 2, DPanicLevel = 3, PanicLevel = 4, FatalLevel = 5
level: -1
# log file name
file_name: admin
# log print prefix
prefix: "[PHANES]"
# will buffer up to 4096 kilobytes of logs,
# waiting at most 10 seconds between flushes.
buffer_size: 4096 # kb, default 256kb
interval: 10 # second, default 30s
metric:
# metrics will listen a http port
# example: localhost:2223/metrics
listen: ":2223"
trace:
addr: "http://localhost:14268/api/traces"
traefik:
# reverse proxy type support: tcp udp http grpc(h2c)
type: tcp
# support "||" or "&&"
rule: "&&"
# is enable tls
tls: true
domain: test.com
# is enable traefik reverse proxy
enabled: true
# match prefix
# prefix:
6.运行(Run your project…)
由于项目为微服务项目,启动时必须依赖 etcd, 所以需要在启动之前至少启动 etcd
go run main.go --registry=etcd --registry_address=127.0.0.1:2379 --config=./script/config.yaml
当你看到 finished to init all component
时, 🎉🎉恭喜你🎆🎆, 你的项目成功启动了,使用 postman 去请求 http://localhost:7771/v1/xxx/xx
体验你的首个Phanes 创建的微服务项目吧
开启新世界
更高级的用法请查看 进阶教程 →