当前位置: 首页 > news >正文

自己做网站怎么赢利2017网站seo如何做

自己做网站怎么赢利,2017网站seo如何做,九龙坡做网站,注册网站给谁交钱MicroServices首先#xff0c;我先解释下#xff0c;文章标题的意思#xff1a;咋看起来特别像是一个标题党????#xff0c;可能是我没想好怎么表达#xff0c;其实白话文就是#xff1a;在微服务场景下#xff0c;肯定会有很多子服务API#xff0c;那多个前端项目… MicroServices首先我先解释下文章标题的意思咋看起来特别像是一个标题党????可能是我没想好怎么表达其实白话文就是在微服务场景下肯定会有很多子服务API那多个前端项目如何对接多个后端资源服务器项目呢也就是多个前端VUE如何对接多个后端的WebApi项目这是问题其实也不难今天就简单的讨论讨论我这里列举了三个场景的解决的方案相信很多人都用过都是比较主流的方案文章的末端会有一个思考就是如何实现第四种方案这也就是我标题里为啥用微服务的原因了本文主要是对微软微服务框架eShop的思考。既然了解了问题那你不妨先思考一下如果是你自己的项目出现了这样的需求VUE项目如何调用调用多个API项目跟着我先慢慢往下看吧。1、先来个需求吧图片来源自Blog.Admin首页相信如果留心的小伙伴肯定这几天看到了我的Admin后台多了一个这样的数据统计特别是下边的30天用户注册统计曲线图这里先说下这是干啥的大家都知道现在我的所有在线项目都是基于IdentityServer4下文简称Is4作为统一认证平台的那这里的用户信息肯定都是来自于Is4项目的因为之前项目我一直在修改用的是默认账号看不出来真实效果所以我干脆去掉了默认账号让每个访问的用户自己注册放心基本填的数据基本都是假的而且我也不会发邮件其他人也看不到我就时不时的需要登录ids.neters.club认证平台去看数据时间长了就麻烦了那么需求来了如何集成到Admin后台通过线图的形式展示呢还能查看日志用户量访问情况异常信息等但是Admin项目的后端Api是BlogCore的我们已经习惯了这种一对一的开发模式现在要实现一个前端对应多个后端的这种一对多的开发模式那如何来处理呢。其实我们简单的思考一下就知道了无论是一对一还是一对多甚至是多对多的情况核心的问题都是如何处理跨域的问题如果浏览器不存在跨域的话我们就可以任意的连接任何资源api了。当然除了跨域第二个问题就是如何对资源的统一管理这是个次要的重点知识。当然工欲善其事必先利其器要实现这个需求我们就首先需要在is4认证平台里添加对外的接口这里是未加权的以后我会说说在加权的情况下如何来处理其实是一样的。 [HttpGet]public MessageModelAccessApiDateView GetAchieveUsers(){ListApiDate apiDates  new ListApiDate();var users  _userManager.Users.Where(d  !d.tdIsDelete).OrderByDescending(d  d.Id).ToList();var tadayRegisterUser users.Where(d d.birth DateTime.Now.Date).Count();apiDates (from n in usersgroup n by new { n.birth.Date } into gselect new ApiDate{date g.Key?.Date.ToString(yyyy-MM-dd),count g.Count(),}).ToList();apiDates apiDates.OrderByDescending(d d.date).Take(30).ToList();if (apiDates.Count 0){apiDates.Add(new ApiDate(){date 没数据,或未开启相应接口服务,count 0});}return new MessageModelAccessApiDateView(){msg 获取成功,success true,response new AccessApiDateView{columns new string[] { date, count },rows apiDates.OrderBy(d d.date).ToList(),today tadayRegisterUser,}};} 现在接口有了前端页面也设计好了具体写法就是vue-chart线图自行查看那如何来解决调用问题呢下边就从四个方面来讨论下。2、万物皆可代理模式代理模式可谓是软件开发中长盛不衰一直活跃的东西虽然有时候很多的名字是“代理”而实际上上不是一回事但是却丝毫不影响我们来使用。那我们在VUE开发中也会用到代理模式就是devProxy本地代理代码很简单基于node服务只需要简单的配置下就可以将任意多个后端给代理到vue本地只不过这里有个弊端只能是本地开发模式下使用。在项目根目录下的vue.config.js中配置没有的话新建即可 devServer: {open: true, //配置自动启动浏览器host: 127.0.0.1,port: 2364, // 当前vue项目 端口号https: false,hotOnly: false, // https:{type:Boolean}// proxy: null, // 设置代理// proxy: http://123.206.33.109:8081,// 配置跨域处理,只有一个代理proxy: {// 配置多个代理/api: {target: http://localhost:8081,//这里改成你自己的后端api端口地址记得每次修改都需要重新buildws: true,changeOrigin: true,pathRewrite: {// 支持路径重写^/api:  // 替换target中的请求地址}},/images: {target: http://localhost:8081,ws: true,changeOrigin: true},/is4api: {target: http://localhost:5004,ws: true,changeOrigin: true},},before: app {}}, 是不是很简单这里我定义了三种策略方案匹配了两个后端项目其中/is4api这个节点就是针对is4项目的接口。然后接口用相对路径的方式来调用设置baseUrl这样就把所有的接口给代理到了前端了这个很简单我就不截图说明了。上边说了这种方案是vue本地的代理我们build后的静态文件是没有这个功能的毕竟没有了node服务支持了所以开发好项目上线的时候就需要代理服务的反向代理功能了。我这里使用的是nginx做web服务器那相应的配置如下location /api/ {rewrite ^.apb/?(.*)$ /$1 break;include uwsgi_params;proxy_pass http://localhost:8081;proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection upgrade;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}location /images/ {include uwsgi_params;proxy_pass http://localhost:8081;proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;#proxy_set_header Connection upgrade;#proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}location /is4api/ {include uwsgi_params;proxy_pass http://localhost:5004;proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection upgrade;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;} 这种就很简单的实现了我们的需求如果还有其他的微服务我们就一一的增加进来往里边添加就行总体来说还是很方便的。但是从上边看出来我们本地开发的时候需要配置一套然后项目上线的时候有需要配置一套感觉不是很美观而且还对管理不友好。所以要是服务比较多的话我们可以换另一种方案就是网关。3、微服务中网关作用很大微服务简易网关图源网络上边咱们说到了代理模式在比较简单的或者说服务比较少的情况下还是一种比较常见、比较高效的开发方案但是随着我们的项目的服务增多因为我这里只有用户数据和博客数据分别对应的是Blog.Idp项目和Blog.Core项目那如果以后需要新增其他功能的时候如上图就需要一个统一的平台或者功能来管理我们的所有资源api了网关就是一个很不错的选择而且也可以结合其他的功能组件中间件等扩展比如服务注册和治理熔断负载等等。既然说到了网关那常见的网关就是Ocelot、Zuul、Kong这些其中优劣不予置评我习惯用Ocelot那今天就说它。第一创建一个网关项目。我其实blog.core项目中已经有了你可以查看下Blog.Core.AdminMvc项目这里什么都没有我就用来做网关了引用Ocelot组件PackageReference IncludeOcelot Version16.0.1 / 第二配置Ocelot服务在startup.cs文件中配置服务和中间件 public void ConfigureServices(IServiceCollection services){// 配置服务services.AddOcelot();}// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.public void Configure(IApplicationBuilder app, IWebHostEnvironment env){if (env.IsDevelopment()){app.UseDeveloperExceptionPage();}// 添加中间件app.UseOcelot().Wait();} 第三配置网关策略在根目录下创建OcelotGatewaySet.json文件然后添加内容具体的逻辑自行百度查看把很简单就是通过一定的配置把分散的下游项目也就是分散的微服务项目给交给一个统一的上游地址只不过有一定的url规则。{Routes: [{DownstreamPathTemplate: /api/{url},DownstreamScheme: http,DownstreamHostAndPorts: [{Host: localhost,Port: 8081}],UpstreamPathTemplate: /gateway/api/{url},UpstreamHttpMethod: [Get,Post,Put,Delete],LoadBalancerOptions: {Type: RoundRobin}},{DownstreamPathTemplate: /is4api/{url},DownstreamScheme: http,DownstreamHostAndPorts: [{Host: localhost,Port: 5004}],UpstreamPathTemplate: /gateway/is4api/{url},UpstreamHttpMethod: [Get,Post,Put,Delete],LoadBalancerOptions: {Type: RoundRobin}}],GlobalConfiguration: {BaseUrl: http://localhost:9000} } 这里我定义了两个下游就是blogcore的8081is4的5004然后分别对应了上游的9000项目的两个地址/gateway/api/{url}、/gateway/is4api/{url}。第四步添加Json文件到应用上边我们自定义了配置策略文件肯定是需要添加到应用里的不然不会被识别除非你是直接写到了appsettings.json里但是这样好像又不太好还是单独写一个文件吧public static IHostBuilder CreateHostBuilder(string[] args) Host.CreateDefaultBuilder(args)// 配置json文件.ConfigureAppConfiguration((hostingContext, config) {config.AddJsonFile(OcelotGatewaySet.json);}).ConfigureWebHostDefaults(webBuilder {webBuilder.UseStartupStartup().UseUrls(http://*:9000);}); 然后就可以看到效果了这样以后无论多少个下游微服务都可以集中到网关里那前端vue项目就很简单的配置一个9000就行了。这样不仅可以实现多对多连接还可以方便服务管理是不是很方便。但是也有一个小问题就是不好做服务之间的业务处理比如我要在blogcore某个业务中使用is4的用户数据也就是跨项目跨数据库实现业务逻辑和事务该怎么办呢别着急我项目中已经集成了多库操作来看看吧。4、扔到后端多库模式BlogCore目前支持单库-多库-读写分离三种模式事务当然也是支持不过跨服跨库事务可能需要分布式事务的组件来实现。具体的内容可以参考《【项目升级】单库、多库、读写分离 · 任你选》具体的写法呢我的b站视频里也录制了都是很简单的操作只需要简单的配置就可以实现多库处理然后仓储层连接好后还可以配合着service层来增删改查就比如这样的来写。第一当然是配置连接字符串在appsettings.json文件中做多库处理如果不会可以看我的视频https://www.bilibili.com/video/BV1BJ411B7mn?p6第二定义对应的Model实体在SugarTable特性里配置好数据库的ConnId这个配置的信息在appsettings.json里。namespace Blog.Core.Model.IDS4DbModels {/// summary/// 以下model 来自ids4项目多库模式为了调取ids4数据/// 用户表/// /summary[SugarTable(AspNetUsers, WMBLOG_MYSQL_2)]public class ApplicationUser{public string LoginName { get; set; }public string RealName { get; set; }public int sex { get; set; } 0;public int age { get; set; }public DateTime birth { get; set; } DateTime.Now;public string addr { get; set; }public bool tdIsDelete { get; set; }} } 第三就是直接创建Service层当然如果你有封装单独的逻辑业务可以自己创建一个仓储层但是如果普通的CURD可以直接使用泛型基类仓储接口 public class ApplicationUserServices : BaseServicesApplicationUser, IApplicationUserServices{IBaseRepositoryApplicationUser _dal;public ApplicationUserServices(IBaseRepositoryApplicationUser dal){this._dal dal;base.BaseDal dal;}} 这样就可以轻松的实现连接了。可以在控制器甚至是Service里写逻辑了这里就不多介绍了。但是其实这种写法呢应该不符合今天内容的主旨这么写虽然可以任意的再后端做多库处理写业务了但是如果微服务多了怎么办又不好做控制负载什么的。而且又不那么灵活甚至如果一个服务崩了也会导致主服务受到影响。那为什么我还要拿出来说一下呢主要是想引出第四种方案就是微服务下在使用网关、做服务治理、负载均衡的情况下如何实现多服务之间的调用。5、如果有第四种方案这里先说下第四种思路的由来就是上边提到的问题在微服务场景下我们是讲一个个服务都拆开限界的各个子服务独立做负载均衡服务注册和治理然后通过网关将所有的服务连接起来看着没问题但是如果某两个或者多个子服务之间相互左右或者相互调用来实现交叉业务逻辑的时候是不是感觉很苍白无力从而导致了很多人问了这样的问题微服务好是好但是我想多表联查怎么办看似和微服务和DDD背道而驰但是却是不得不考虑的一个问题。当然方案还是有的比如常见的RestFul、gRPC、MQ、Bus等等技术这些知识点其实就是第四种方案其实就是第二和第三种方案的结合体。这些内容在微软的微服务框架eShopOnContainer都可以看的到我也正在学习和讲解想了解的时候可以看一看《#微服务之eShop讲解》END欢迎将文章分享到朋友圈如需转载请在后台回复“转载”获取授权▼更多精彩推荐老张的哲学▼把时间交给阅读
http://www.pierceye.com/news/404857/

相关文章:

  • 企业网站的综合要求最新领导班子7人名单
  • 通过阿里云建设企业网站联想企业网站建设的思路
  • 网站建设服务器的选择方案建设报名系统是正规网站吗
  • 揭阳高端模板建站WordPress背景音乐6
  • 如何使用云服务建设网站cpa之家 app推广平台
  • 网站设计策划书案例漳浦建设局网站
  • ps做分享类网站效果图设计公司工作室创业规划
  • 个人虚拟机做网站设计实例网站
  • 衡阳企业网站wordpress置顶文章顺序
  • 网站建设宗旨是指郑州有名的做网页的公司
  • 怎么0成本做网站企业网站如何设计网页
  • 做韦恩图网站课程分销平台
  • html5网站建设中企业整站推广
  • 织梦网站打开速度慢做抢单软件的网站
  • 51单片机可以做网站怎么建设游戏试玩平台网站
  • 汕头网站建设方案维护wordpress百度熊掌
  • 牛街网站建设产品vi设计都包括什么
  • 网站需要多大宽带网站发展的方向
  • 陈光锋网站运营推广新动向故城建设银行网站
  • 备案后网站可以改名吗临颖网站建设
  • 临沭县建设局官方网站怎样做外贸网站推广
  • 手机网站支付一个简单的网页代码带图片
  • 向公司申请请做网站广州网站推广教程
  • 用QQ群做网站排名交互式网站app
  • 正规免费发布信息网站国外网站界面
  • 浏览国外网站 dns网店运营推广方案
  • wordpress弹幕视频插件广西seo搜索引擎优化
  • 网站开发与维护工资多少网络公司排名兴田德润
  • wordpress主题ux壹搜网站建设优化排名
  • 试剂产品商城网站建设杭州网站现场备案