.NET Core微服务开发选项

微服务开发的关注点有哪些?

微服务构最终的目标是实现业务的价值,交付,为了让开发人员更加关注业务开发和交付,微服务需要一些比较底层的基础设置,我们也称为微服务公共关注点。

  • 配置管理:对微服务可变参数进行配置管理。比如各种开关、数据库连接等。

  • 服务发现和LB:服务分布在不同节点上,服务之间需要互相调用,首先需要定位找到对方,这就是服务发现。一般一个服务会多实例部署,调用方需要以某种负载均衡策略访问目标服务实例这就是LB。

  • 弹性和容错:分布式服务是以网络相互连接,网络可能会出现故障,比如断线,宕机,超时,微服务必须具备容错的能力来保证服务的质量和用户体验。

  • API管理:主要指微服务系统对外暴露的api,一般通过api网关管理,网关是微服务大门,需要支持反向路由、安全鉴权、日志监控、限流容错等基本功能,高级网关还需要支持AB测试、蓝绿和灰度测试等高级功能。

  • 服务安全:用户访问微服务首先需要认证,如果操作某些敏感服务还需要鉴权,服务之间调用也需要一定的权限管控。

  • 日志监控:服务访问日志需要进行集中采集、存储和分析,方便进一步的分析微服务性能甚至是用户的行为。

  • Metrics监控:通过埋点对微服务进行性能、延迟、调用量、错误数等等进行监控;也可以对重要的业务指标进行监控。

  • 调用链监控:分布式系统服务之间相互依赖错综复杂,通过调用链监控可以事实掌握服务之间的依赖关系和之间调用的性能,出现问题,通过分析调用链分析,进一步进行排障。

  • 调度和发布:最终微服务需要发布到生产环境当中去,目前推荐的微服务交付手段主要是容器云环境,容器云 需要支持资源自动调度和发布,高级的需要滚动发布和蓝绿发布。

  • 自愈和自动伸缩

.NET Core 微服务开发有哪些选择?

  • 如果在3年前,你羡慕别人有Spring cloud 全家桶 ,可以很方便的开发微服务,那是真羡慕。不过随着K8S的出现,你真的不用羡慕了,你可以使用.NET core+K8S 的组合方式作为开发微服务的选择。

  • 也可以选择Steeltoe,它是Pivotal公司开源给.NET基金会的项目。官网地址:https://steeltoe.io/

  • 完全使用.NET开源社区项目来开发微服务。比如Ocelot等..

下面主要列举下采用.NET开源社区和k8s作为微服务进行开发

最终采用哪种开发技术,需要根据自己公司的团队和业务进行考虑,k8s很强大的,需要掌握和学习的技术。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/308963.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

常见的HTTP状态码(HTTP Status Code)说明

作为一个互联网开发人员对于一些服务器返回的HTTP状态的意思都必须是了如指掌的,只有将这些状态码一一弄清楚,工作中遇到的各种问题才能够处理的得心应手。好了,下面就让我们来了解一下比较常见的HTTP状态码吧! 2开头 &#xff0…

.NET 开源项目 StreamJsonRpc 介绍[上篇]

StreamJsonRpc 是一个实现了 JSON-RPC 通信协议的开源 .NET 库,在介绍 StreamJsonRpc 之前,我们先来了解一下 JSON-RPC。JSON-RPC 介绍JSON-RPC 是一个无状态且轻量级的远程过程调用(RPC)协议,其使用 JSON(…

hash table(用乘法散列法实现)

hash table(用乘法散列法实现&#xff09; #ifndef C11LEARN_HASHMULTI_H #define C11LEARN_HASHMULTI_H #include "HashDivision.h" template<typename T> class HashMulti:public HashDivision<T> { private:long w;long p;long long s;long long two_…

gRPC真要取代WebApi了,你还学得过来吗?

今年1月份微软曾宣布要实验性的对.NET支持 gRPC-Web&#xff0c;然后在6月份已经正式发布了。这些天尝试了下&#xff0c;真的很强大&#xff0c;不负责任的预言下&#xff0c;RESTful的时代即将过去&#xff0c;而gRPC要成为革命者&#xff01;先别急眼&#xff0c;下面我来详…

hash table(开放寻址法-线性探查实现的哈希表)

hash table(开放寻址法-线性探查实现的哈希表&#xff09; // // Created by 许加权 on 2021/7/17. //#ifndef C11LEARN_HASHLINER_H #define C11LEARN_HASHLINER_H #include "KeyNode.h" template<typename T> class HashLiner { public:HashLiner();HashLin…

Spring5 jar包下载

下载地址 https://repo.spring.io/simple/libs-release-local/org/springframework/spring/ Spring5最新版本的下载 选择最新版本5.2.3 下载前两项&#xff0c;解压放入文件夹中 项目中导包 ps&#xff1a;我使用的开发工具是idea 第一步&#xff1a;在file中选择project st…

hash table(开放寻址法-二次探查实现的哈希表)

hash table(开放寻址法-二次探查实现的哈希表&#xff09; #ifndef C11LEARN_HASHQUADRATIC_H #define C11LEARN_HASHQUADRATIC_H #include "HashLiner.h" template<typename T> class HashQuadratic:public HashLiner<T> { public:HashQuadratic(int c1…

优化 Azure 成本,实现财务目标

点击上方蓝字关注“汪宇杰博客”原文&#xff1a;Omar Khan General Manager, Microsoft Azure翻译&#xff1a;汪宇杰导语我们的许多客户都面临着如何满足关键 IT 项目的资金需求的困难决策。我们在此共同帮助您实现财务目标。确保 Azure 工作负载的成本得到优化有助于释放资金…

集合的定义与并查操作(C语言)

代码如下&#xff1a; #define MAXN 1000 /* 集合最大元素个数 */ typedef int ElementType; /* 默认元素可以用非负整数表示 */ typedef int SetName; /* 默认用根结点的下标作为集合名称 */ typedef ElementType SetType[MAXN]; /…

采用config方式灵活配置我们的Quarz.net中的Job,Trigger

经常在项目中遇到定时任务的时候&#xff0c;通常第一个想到的是Timer定时器&#xff0c;但是这玩意功能太弱鸡&#xff0c;实际上通常采用的是专业化的第三方调度框架&#xff0c;比如说Quartz&#xff0c;它具有功能强大和应用的灵活性&#xff0c;我想使用过的人都非常了解&…

hash table(开放寻址法-双重散列实现的哈希表)

hash table(开放寻址法-双重散列实现的哈希表&#xff09; #ifndef C11LEARN_HASHDOUBLE_H #define C11LEARN_HASHDOUBLE_H #include "HashLiner.h" template<typename T> class HashDouble:public HashLiner<T>{ protected:virtual int hashing(int key…

对于任给的一张无向带权连通图,求出其最小生成树(C++)

对于任给的一张无向带权连通图&#xff0c;求出其最小生成树。 题目要求: (1)编程创建一幅图 (2)输出创建的图 (3)编写Prim算法代码&#xff0c;实现图的最小生成树求解&#xff0c;且输出最小生成树 (4)编写Kruskal算法代码&#xff0c;实现图的最小生成树求解&#xff0c;且…

使用.Net Core实现的一个图形验证码

SimpleCaptcha是一个使用简单&#xff0c;基于.Net Standard 2.0的图形验证码模块。它的灵感来源于Edi.Wang的这篇文章https://edi.wang/post/2018/10/13/generate-captcha-code-aspnet-core&#xff0c;我将其中生成验证码的代码抽取出来进行封装得到了这个模块。下面介绍一下…

hash table(全域散列法实现的哈希表)

hash table(全域散列法实现的哈希表&#xff09; 利用每次重建哈希表时随机生成散列函数 #ifndef C11LEARN_HASHUNIVERSAL_H #define C11LEARN_HASHUNIVERSAL_H #include "Chain.h" #include "../tools/random.h" template<typename T> class HashU…

Maven编译项目时报错:不再支持源选项 5。请使用 6 或更高版本。 不再支持目标选项 1.5。请使用 1.6 或更高版本。

在使用Maven编译项目时报错&#xff1a; 不再支持源选项 5。请使用 6 或更高版本。 不再支持目标选项 1.5。请使用 1.6 或更高版本。 在项目pom.xml文件中增加maven编译的jdk版本设置&#xff0c;maven.compiler.source和maven.compiler.target&#xff1a; <properties&…

random(随机函数生成)

random(随机函数生成&#xff09; #ifndef C11LEARN_RANDOM_H #define C11LEARN_RANDOM_H #include <time.h> #include <stdlib.h> int random_include_left_right(int left,int right); int random_only_include_left(int left,int right); int random_only_incl…

ABP框架 v3.0 已发布!

我们很高兴地宣布,ABP框架和ABP商业版3.0版已经发布.与常规的2周发布一个版本不同的是, 这个版本用了4周的时间.关闭了119个issue,合并了89个pull request 和主框架仓库中的798次提交.由于这是一个主要版本,它也包括了一些重大更改.不要害怕,这些变化都容易对应,并且下面会详细…

C++实现dijkstra单源最短路径

代码如下: #include <iostream> using namespace std; const int N 30; typedef char ElemType; const double noEdge 99999;class Graph { private:double G[N][N];int vertexN, edgeN;double dist[N];bool vis[N];int path[N];int sv;ElemType data[N];int findMinD…

hash table(完全散列实现的哈希表)

hash table(完全散列实现的哈希表) 完全散列 特点&#xff1a;静态的&#xff0c;创建时候完成了散列表的生成。 不可以删&#xff0c;也不可以增加数据。只可以修改数据。 内部用全域散列生成 #ifndef C11LEARN_HASHPERFECT_H #define C11LEARN_HASHPERFECT_H #include &quo…