• 浅谈我在.net core一年里的收获


    前言:以前一直在winserver的环境里从事web工作,安装一个sqlserver,iis,把项目部署上面就OK了,简单轻松
    一.结缘nginx
    以前一直听说nginx这个反向代理的web服务器,当玩nginx时才知道,iis为我们做了两件事
    1.应用程序服务器(nfx),解析动态程序,例如aspx
    2.反向代理,将解析后的资源或静态资源,代理出去
    .net core使用iis做反向代理与用nginx有区别呢(只说手感,手感你懂的)
    nginx 配置可简单,可灵活,可负载,可集群,可过滤,方便查阅日志.........更多牛逼的功能就没有用到了

    简单配置(把本地7711端口代理到8852端口)

    1 server {
    2 listen 8852;
    3 server_name localhost;
    4 location / {
    5 proxy_pass http://localhost:7711;
    6 index /project1/toIndex;
    7 }
    8 }
    View Code

    简单命令

    service nginx start
    service nginx restart
    service nginx stop

    iis 没啥优点,工程使用iis跑出错后,我就统一改成控制台了,在linux上稳的一逼

    二.supervisor
    这是干嘛的呢,就是守护你的程序的
    你可能在想,我程序好好的,要它守护个鸡毛
    就你这臭脾气,也就只有winserve惯着你,当你服务器重启的时候,winserver的iis会自动启动站点,sqlserver的服务设置自动的,也会自动启动
    linux可就不惯着你了,当服务器重启的时候,那你得手动一个个start你的服务
    为了解决这个麻烦,supervisor闪亮登陆,只要在supervisor里配置你要守护的服务,服务器每次启动的时候,它都会去给你启动服务,并且记录了你服务控制台的日志,不光如此,它还提供了图形化管理界面,你可以手动启动关闭你的服务

    每个服务新增一个配置文件

    配置如下(看的懂配置,其它的服务都是照着copy,简单的很)

    1 [program:Tibos.Api]
    2 command=/bin/bash -c "dotnet Tibos.Api.dll"
    3 directory=/home/wwwroot/NH.Core/Tibos.Api/PublishOutput/
    4 autorestart=true
    5 stderr_logfile=/var/log/Tibos.Api.err.log
    6 stdout_logfile=/var/log/Tibos.Api.out.log
    7 environment=ASPNETCORE_ENVIRONMENT=Production
    8 user=root
    9 stopsignal=INT
    View Code

    介绍了上面这对黄金搭档,接下来介绍另一对黄金搭档

    三.Ocelot
    这是.net core里常用的一个APIGateway,园子里资料已经非常多了,功能简单的来说就是代理下游的服务,并暴露给消费者,里面集成了负载均衡,统一授权验证(IdentityServer4)....
    给我的感觉就是啥优秀的框架都可以往里面集成

    四.Consul
    这是一个玩服务注册与服务发现的玩意,啥子意思呢
    这就要从Ocelot做负载均衡来说起,我们来讲一个小故事,老王管理着三个工人,地主从老王这里拉工人去工地里干活
    那么就存在几个问题
    1.新人来了怎么办?
    2.工人生病了怎么办?
    这里老王就是Consul,新人来了,首先要到老王这里申请成为工人(服务注册),这里是工人主动申请的,可不是老王强迫的哦
    这里地主就是Ocelot,老王会定期给工人检查健康(心跳包),并给它们安排职务,地主去老王那里拉人(服务发现),然后干活
    当然这里还有一个情况,就工人偶尔抽风,这里可以使用Polly去处理,因为我还没有用过Polly这里就不做介绍

    Consul也提供图形化界面,我这里是注册了三个服务,可以体验一下:http://193.112.104.103:9000/api/values

    它会负载输出三个服务的值,如果我使用supervisor停止了某个服务,也不会影响成像的正常运行,轻松实现热更新

    五.Docker
    Docker牛逼,不要问我为啥子牛逼,就是牛逼,谁用谁知道
    1.第一难题,解决萌新接触Linux装软件问题
    什么.net core runtim,nginx,mysql......这一堆东西总要装的吧,装到哪去了呢,玩坏了怎么办?
    在win上就遇到个问题,一个朋友装sqlserver,然后卸载了,然后再装sqlserver就死活装不上去,清理注册表也不行,没办法重装系统了.......
    毕竟第一次玩linux,装软件肯定要去改配置什么的,经常不知道装到哪去了(好在都是默认位置,百度比较好找),怎么卸载....
    Docker就很好的解决了这个问题,基本上流行的东西docker hub上都有,拉个镜像,创建个容器,在容器里随便玩,玩坏了,再创建个容器就好了
    2.制作Docker镜像
    哇,这个可就真牛逼了,把自己的项目做成一个Docker镜像,然后丢到Dockerhub(免费的镜像仓库)里,这样所有人都可以拉你的这个镜像了
    我把.net core runtime(200多m) 跟自己的程序一起打包成一个镜像,这样别的服务器就不用安装.net core runtime了,开箱即用
    大家可以拉取我的镜像玩玩(一个示例的webapi) docker pull wmowm/tibos:v1.0

    Dockerhub大家也可以去注册一个账户玩玩(镜像257M,在仓库压缩后106M)

    这里我玩docker的一些常用命令

     1 docker images
     2 docker ps
     3 docker ps -a
     4 docker rm [id]
     5 docker logs --since 30m [id]
     6 docker start [id]
     7 docker stop [id]
     8 docker exec -it [id] /bin/bash
     9 docker inspect [id]
    10 
    11 
    12 docker run --name mysq -p 3307:3306 -v /my/mysql/datadir:/var/lib/mysql -v /my/mysql/conf.d:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
    13 
    14 --Dockerfile
    15 
    16 FROM microsoft/dotnet:2.1-aspnetcore-runtime
    17 WORKDIR /app
    18 COPY . .
    19 EXPOSE 5101
    20 ENTRYPOINT ["dotnet", "Docker.Test.dll"]
    21 
    22 docker build -t testimage .
    23 
    24 docker run --name=test -p 7711:5101 -d  testimage
    25 
    26 
    27 --打标签
    28 docker tag [imageid] wmowm/tibos:v1.0
    29 
    30 --推送
    31 docker push wmowm/tibos:v1.0
    32 
    33 --拉取
    34 docker pull wmowm/tibos:v1.0
    View Code

    六.Jenkins
    java写的一款持续集成软件,功能强大,对于我们.net core来说,也很方便,建议参考晓晨MM的博客,直接用docker安装,就是做多节点坑比较多,多折腾一下也能实现
    说说.net core过程
    1.文件夹方式打包,上传到github
    2.点击构建,拉取github上的文件
    3.拉取完成后,执行shell
    如果一台服务器用xftp手动传就可以了,如果是多台服务器,配置好多节点,就非常方便了
    我写的shell比较简单,拉取到文件后,把文件copy到指定位置,然后重启supervisorctl

     

    七..netcore里的一些优秀框架

    1.杨总的CAP,满星推荐,既可以做EvenBus又是分布式最终一致性的解决方案
    2.Autofac,非常优秀的IOC容器
    3.AutoMapper
    4.NHibernate5.1,好吧,是我强行打了一波广告,我个人觉得还是非常不错的,推荐混合Dapper用,这样CAP也可以用上,喜欢的可以去看看https://github.com/wmowm/nh.core
    5.signalr nfx里就用过了,非常不错
    6.QuartzNet 任务调度
    还有好多,这里就不一一列举了.......

    八.Linux,给我一种错觉,只要你程序部署在Linux上面,就可以利用到Linux上的一切资源,大家就是一家人,也许这就是开源的魅力吧
    1.没有广告
    2.稳

  • 相关阅读:
    nginx 配置下载text等文件
    linux 挂载硬盘
    linux 常用命令
    linux 常用目录的作用
    linux 增加新用户无法使用sudo命令解决办法
    linux 安装ifconfig
    linux 更换yum源
    eclipse 环境安装
    ORACLE 迁移MYSQL 随笔
    微信跳转显示空白页
  • 原文地址:https://www.cnblogs.com/tibos/p/9890933.html
Copyright © 2020-2023  润新知