淺談我在.net core一年裏的收穫

 

前言:之前一直在winserver的環境裏從事web工做,安裝一個sqlserver,iis,把項目部署上面就OK了,簡單輕鬆
一.結緣nginx
之前一直據說nginx這個反向代理的web服務器,當玩nginx時才知道,iis爲咱們作了兩件事
1.應用程序服務器(nfx),解析動態程序,例如aspx
2.反向代理,將解析後的資源或靜態資源,代理出去
.net core使用iis作反向代理與用nginx有區別呢(只說手感,手感你懂的)
nginx 配置可簡單,可靈活,可負載,可集羣,可過濾,方便查閱日誌.........更多牛逼的功能就沒有用到了java

簡單配置(把本地7711端口代理到8852端口)mysql

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

簡單命令linux

service nginx start
service nginx restart
service nginx stopnginx

iis 沒啥優勢,工程使用iis跑出錯後,我就統一改爲控制檯了,在linux上穩的一逼git

二.supervisor
這是幹嗎的呢,就是守護你的程序的
你可能在想,我程序好好的,要它守護個雞毛
就你這臭脾氣,也就只有winserve慣着你,當你服務器重啓的時候,winserver的iis會自動啓動站點,sqlserver的服務設置自動的,也會自動啓動
linux可就不慣着你了,當服務器重啓的時候,那你得手動一個個start你的服務
爲了解決這個麻煩,supervisor閃亮登錄,只要在supervisor裏配置你要守護的服務,服務器每次啓動的時候,它都會去給你啓動服務,而且記錄了你服務控制檯的日誌,不光如此,它還提供了圖形化管理界面,你能夠手動啓動關閉你的服務github

 

每一個服務新增一個配置文件web

配置以下(看的懂配置,其它的服務都是照着copy,簡單的很)sql

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

介紹了上面這對黃金搭檔,接下來介紹另外一對黃金搭檔docker

三.Ocelot
這是.net core裏經常使用的一個APIGateway,園子裏資料已經很是多了,功能簡單的來講就是代理下游的服務,並暴露給消費者,裏面集成了負載均衡,統一受權驗證(IdentityServer4)....
給個人感受就是啥優秀的框架均可以往裏面集成shell

四.Consol
這是一個玩服務註冊與服務發現的玩意,啥子意思呢
這就要從Ocelot作負載均衡來講起,咱們來說一個小故事,老王管理着三個工人,地主從老王這裏拉工人去工地裏幹活
那麼就存在幾個問題
1.新人來了怎麼辦?
2.工人生病了怎麼辦?
這裏老王就是Consol,新人來了,首先要到老王這裏申請成爲工人(服務註冊),這裏是工人主動申請的,可不是老王強迫的哦
這裏地主就是Ocelot,老王會按期給工人檢查健康(心跳包),並給它們安排職務,地主去老王那裏拉人(服務發現),而後幹活
固然這裏還有一個狀況,就工人偶爾抽風,這裏可使用Polly去處理,由於我尚未用過Polly這裏就不作介紹

 

Consol也提供圖形化界面,我這裏是註冊了三個服務,能夠體驗一下: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.穩

相關文章
相關標籤/搜索