微服务开发用户服务流程
用户服务
微服务(python)
目录结构
1 | mxshop_srvs |
创建虚拟环境
1 | mkvirtualenv mxshop_srv |
用户表设计
1 | pip3 install peewee |
user_srv/settings/settings.py
1 | from abc import ABC |
user_srv/model/models.py
1 | from peewee import * |
密码处理
1 | # https://passlib.readthedocs.io/en/stable/ |
proto
接口定义
user_srv/proto/user.proto
1 | syntax = "proto3"; |
安装模块生成文件
1 | # 安装模块 |
日志库loguru
1 | pip install loguru |
查询所有用户接口
user_srv/handler/user.py
1 | import time |
user_srv/server.py
1 | import grpc |
user_srv/tests/user.py
1 | # 测试服务 |
优雅退出
user_srv/server.py
1 | import os |
传入启动参数
user_srv/server.py
1 | import argparse |
1 | import os |
基本实现
user_srv/proto/user.proto
1 | syntax = "proto3"; |
user_srv/model/models.py
1 | from peewee import * |
user_srv/handler/user.py
1 | import time |
user_srv/settings/settings.py
1 | from abc import ABC |
user_srv/server.py
1 | import os |
user_srv/tests/user.py
1 | # 测试脚本 |
web
服务(go)
目录结构
1 | mxshop-api |
日志库zap
1 | // 地址 https://github.com/uber-go/zap |
输出到文件中
1 | package main |
拆分gin
和引入zap
user-web/main.go
1 | package main |
user-web/router/user.go
1 | package router |
user-web/initialize/router.go
1 | package initialize |
user-web/initialize/logger.go
1 | package initialize |
user-web/api/user.go
1 | package api |
调用grpc服务
1 | ``` |
使用go应用程序的完整配置解决方案
支持 JSON TOML YAML HCL 等
支持设置默认值
实时监控的重新读取配置文件
从环境中读取
从远程配置系统读取并监控配置变化
从命令行参数读取
从buffer读取
显式配置值
https://github.com/spf13/viper
go get github.com/spf13/viper
1 |
|
config.yaml
1 | name: 'user-web' |
两层yaml
1 | package main |
1 | name: 'user-web' |
隔离配置文件
config-pro.yaml
1 | name: 'user-web' |
cofig-debug.yaml
1 | name: 'user-web2' |
main.go
1 | package main |
整体加入配置文件管理
1 | ``` |
自定义mobile
验证器
1 | ``` |
jwt
集成到gin
1 | // https://github.com/dgrijalva/jwt-go |
跨域问题
1 | ``` |
Redis存储验证码
1 | // https://github.com/go-redis/redis |
注册中心
安装和基础使用
1 | https://github.com/consul/consul |
Python 操作consul
1 | import requests |
go操作consul
1 | package main |
代码中配置监控检查接口
配置http
1 | Router.GET("/health", func(c *gin.Context) { |
配置grpc
1 | # grpc的服务中 需要增加consul 的 proto 服务注册 |
动态获取端口
1 |
grpc负载均衡
1 | // https://github.com/mbobakov/grpc-consul-resolver |
nacos配置中心
1 | https://nacos.io/zh-cn/docs/what-is-nacos.html |
python操作
1 | import nacos |
go操作nacos
1 | package main |