.net 微服务实践
Hibernate入门之命名策略(naming strategy)详解
l 媒介
本文纪录了我的一次.net core 微效劳架构实践经验,以及所用到的手艺
l 长处
- 每一个效劳聚焦于一块营业,不管在开发阶段或是布置阶段都是自力的,更适合被各个小团队开发保护,团队对效劳的全部生命周期担任,事情在自力的上下文当中。
- 假如某一项效劳的机能抵达瓶颈,我们只须要增添该效劳负载节点,能够针对体系的瓶颈效劳更有用的应用资本。
- 效劳A能够应用.net完成 ,效劳B能够应用java完成,手艺选型天真,体系不会历久限定在某个手艺栈上。
- 松耦合、高内聚,代码轻易明白,开发效力高,更好保护。
- 高可用,每一个效劳能够启动多个实例负载,单个实例挂了有充足的相应时刻来修复
l 瑕玷
- 体系范围巨大,运维要求高,须要devops技能(Jenkins,Kubernetes等等)
- 跨效劳需求须要团队之间的合作
- 跨效劳的挪用(http/rpc)增添了体系的耽误
l Docker
docker是现在广泛应用的容器化手艺,在此架构中我们的应用程序将布置在docker容器内里,经由过程docker宣布应用 须要先编写一个dockerfile,以下
#引入镜像 .net core 3.1 FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base #设定事情目次 WORKDIR /app #在容器中程序应用的端口,一定要和程序启动应用的端口对应上 EXPOSE 80 #复制文件到事情目次 COPY . . #环境变量 此变量会掩盖appsetting.json 内的同名变量 ENV Ip "" ENV Port "" #启动程序 ENTRYPOINT ["dotnet", "Union.UserCenter.dll"]
docker build 敕令 将我们的宣布目次打包一个docker镜像,比方 docker build -t test . ,test是镜像称号
docker run 敕令启动我们打包的镜像,比方 docker run -d -p 5002:80 --name="test1" -e Ip="192.168.0.164" -e Port="5002" test ,-e 示意通报环境变量
更多docker敕令 请查阅:
docker官网:
- 布置轻易:只须要一个简朴的 docker run敕令,就能够启动一个应用实例了
- 布置平安:打包镜像的时刻已打包了应用所需环境,运转环境不会涌现任何问题
- 断绝性好:统一台机械我能够布置java的应用和.net的应用,互不影响
- 快速回滚:只需镜像存在能够快速回滚到任一版本
- 成本低:一台机械能够运转许多实例,很轻易就能够完成高可用和横向扩大
经测试docker for windows不适合布置生产环境,照样得在liunx体系上跑, .net framework 没法在docker上布置
Docker compose :Docker官方供应的治理工具,能够简朴的设置一组容器启动参数、启动次序、依靠关联
Kubernetes :容器数目许多以后会变得难以治理,能够引入Kubernetes对容器举行自动治理,闇练应用有一定难度,中文社区:
l RPC 远程过程挪用
为何要有RPC
根据微效劳设想头脑,效劳A只专注于效劳A的营业,然则需求上一定会有用劳A须要挪用效劳B来完成一个营业处置惩罚的状况,应用http挪用其他效劳效力相对较低,所以引入了RPC。
gRPC vs thrift 评测:
这里应用thrift,thrift 官网:
Thrift 采纳IDL(Interface Definition Language)来定义通用的效劳接口,然后经由过程Thrift供应的编译器,能够将效劳接口编译成差别言语编写的代码,经由过程这个体式格局来完成跨言语的功用,语法请自行百度
下载thrift 代码生成器 ,thrift-0.13.0.exe 这个文件
执行敕令 thrift.exe --gen netcore xxxxxxx.thrift ,生成C# 效劳接口代码
援用官方供应的.net 库,能够去官网下载