IT教程 ·

.net 微服务实践

Hibernate入门之命名策略(naming strategy)详解

l  媒介

 本文纪录了我的一次.net core 微效劳架构实践经验,以及所用到的手艺

l  长处

  1. 每一个效劳聚焦于一块营业,不管在开发阶段或是布置阶段都是自力的,更适合被各个小团队开发保护,团队对效劳的全部生命周期担任,事情在自力的上下文当中。
  2. 假如某一项效劳的机能抵达瓶颈,我们只须要增添该效劳负载节点,能够针对体系的瓶颈效劳更有用的应用资本。
  3. 效劳A能够应用.net完成 ,效劳B能够应用java完成,手艺选型天真,体系不会历久限定在某个手艺栈上。
  4. 松耦合、高内聚,代码轻易明白,开发效力高,更好保护。
  5. 高可用,每一个效劳能够启动多个实例负载,单个实例挂了有充足的相应时刻来修复

l  瑕玷

  1. 体系范围巨大,运维要求高,须要devops技能(Jenkins,Kubernetes等等)
  2. 跨效劳需求须要团队之间的合作
  3. 跨效劳的挪用(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官网:

  .net 微服务实践 IT教程 第1张

  • 布置轻易:只须要一个简朴的 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供应的编译器,能够将效劳接口编译成差别言语编写的代码,经由过程这个体式格局来完成跨言语的功用,语法请自行百度

  .net 微服务实践 IT教程 第2张

下载thrift 代码生成器   ,thrift-0.13.0.exe 这个文件

  执行敕令 thrift.exe --gen netcore xxxxxxx.thrift ,生成C# 效劳接口代码

.net 微服务实践 IT教程 第3张

  援用官方供应的.net 库,能够去官网下载