微服务
定义:
它是一种架构模式,提倡将大的单体系统,按业务拆分成一个个较小且独立的服务,服务与服务之前进行相互协作和配合。
历史:
针对互联网行业的蓬勃发展,需要支撑的业务越来越多,越来越大,单体程序越来越难以支撑,因此才出现了微服务的这种架构。
优点:
它的优点主要是与单体程序相比
1.开发独立:因开发独立就可以使用不同的语言进行开发,这样就更能发挥出各语言擅长的方面。
2.低耦合 :服务与服务间采用轻量级的通信机制相沟通(Http,tcp/id),当某一服务出现问题,可以通过“降级熔断”等手段来保证系统不雪崩。
3.独立部署:这个就厉害了,独立部署带给我们的就是快速的迭代,完全与现在的敏捷开发相符。
4.横向扩展:这就是对于某一个服务的压力大的时候,我们就可以针对这一个服务进行集群扩展,而不像原单体系统那样,需要整个系统作扩展。
缺点:
1.因架构使各服务(系统)的颗粒度更小了,整体来说对开发和维护的难度就增加。(当然现在以云的方式部署,因此能屏蔽一些问题)
2.因服务与服务之前的通信机制是网络的方式,因此对于单体的进程内通信就显得运行效率降下来了。
原则:
1.单一职责:每个微服务只需要实现自己的业务逻辑就可以了,比如订单管理模块,它只需要处理订单的业务逻辑就可以了,其它的不必考虑
2.服务自治:每个微服务从开发、测试、运维等都是独立的,包括存储的数据库也都是独立的,自己就有一套完整的流程,我们完全可以把它当成一个项目来对待。不必依赖于其它模块。
3.轻量级通信:首先是通信的语言非常的轻量,第二,该通信方式需要是跨语言、跨平台的,之所以要跨平台、跨语言就是为了让每个微服务都有足够的独立性,可以不受技术的钳制。
4.接口明确:由于微服务之间可能存在着调用关系,为了尽量避免以后由于某个微服务的接口变化而导致其它微服务都做调整,在设计之初就要考虑到所有情况,让接口尽量做的更通用,更灵活,从而尽量避免其它模块也做调整。
使用:
服务拆分:
1.微服务拆分原则:领域模型、限定上下文、组织架构、康威定律
2.每个服务有自己的数据库
3.微服务之间确定服务边界,通过共享模型建立联系
数据一至性
1.使用最终一致性来代替强一致性
2.可靠性事件模式
3.补尝模式
服务通信
1.通信技术方案: RPC vs REST vs 异步消息
2.服务注册和发现
3.负载均衡
服务网关
1.API Gateway
2.划分前端服务的后端服务,移动端服务
3.身份认证、路由服务、限流防刷、日志统计
高可观察
1.健康检测、集中监控
2.日志聚合及检索
3.分布式追踪
可靠性
1.流量控制,超时控制
2.舱壁隔离,熔断机制
3.服务降级, 幂等重试
 
微服务是近期兴起的一种架构模式,因此再使用时,我们就会遇到不同的坑,比如需要依赖的中间件更新速度比较快,因此会造成每个版本在使用上的不同。因此在使用时请注意尽量选择一些大公司已经使用的技术。
 
在.Net Core中使用的技术
服务治理发现:Consul
熔断降级:Poll
网关: Ocelot
身份认证:Identity Server
RPC通信:Thirft
分布式配置中心:Apollo(阿波罗)
监控插件:App Metrics
分布式日志收集框架: Exceptionless
时间序列数据库:InfluxDB
开源仪表盘工具:Grafana
 
转自:https://www.cnblogs.com/xiao-feng/p/9129784.html

微服务定义及.Net Core中用的技术的更多相关文章

  1. 微服务系列实践 .NET CORE

    从事这个行业转眼已经6年了,从当初刚毕业的在北京朝八晚十,从二环到五环,仍每天精力充沛的小愤青:再到深圳一点一滴的辛勤在软件行业的耕种,从当初单体应用架构到现在微服务架构的经历,回想起来自己的收获倒是 ...

  2. 浅谈微服务架构与.Net Core

    微服务(microservice)这个概念是2012年出现的,2014年3月Martin Fowler在他的个人网站(https://martinfowler.com/articles/microse ...

  3. .NET Core微服务之ASP.NET Core on Docker

    Tip: 此篇已加入.NET Core微服务基础系列文章索引 一.Docker极简介绍 1.1 总体介绍 Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源.D ...

  4. 【微服务目录】.NET Core 微服务介绍

    介绍: 写这篇文章有多方面的原因,第一当然是为了以后自己可以随时翻阅,第二也算是一种积累吧.因为有些东西你弄个之后,过了很长时间不用,可能会有些忘却,但是你因为以前弄个吧,有不是那种小白,需要去找示例 ...

  5. 微服务日志之.NET Core使用NLog通过Kafka实现日志收集

    一.前言 NET Core越来越受欢迎,因为它具有在多个平台上运行的原始.NET Framework的强大功能.Kafka正迅速成为软件行业的标准消息传递技术.这篇文章简单介绍了如何使用.NET(Co ...

  6. 微服务学习及.net core入门教程

    https://www.cnblogs.com/jackyfei/p/12067708.html https://www.cnblogs.com/jesse2013/ http://video.jes ...

  7. .Net Core with 微服务 - Consul 注册中心

    上一次我们介绍了 Ocelot 网关的基本用法.这次我们开始介绍服务注册发现组件 Consul 的简单使用方法. 服务注册发现 首先先让我们回顾下服务注册发现的概念. 在实施微服务之后,我们的调用都变 ...

  8. .Net Core with 微服务 - Elastic APM

    上一次我们介绍了Seq日志聚合组件.这次要给大家介绍的是Elastic APM ,一款应用程序性能监控组件.APM 监控围绕对应用.服务.容器的健康监控,对接口的调用链.性能进行监控.在我们实施微服务 ...

  9. .Net Core with 微服务 - Polly 服务降级熔断

    在我们实施微服务之后,服务间的调用变的异常频繁.多个服务之间可能是互相依赖的关系.某个服务出现故障或者是服务间的网络出现故障都会造成服务调用的失败,进而影响到某个业务服务处理失败.某一个服务调用失败轻 ...

随机推荐

  1. mysql里的数据库引擎, 编码格式

    针对数据库里即使设置了varchar类型的字段, 值输入中文报错的情况,是因为数据库的默认编码类型不支持汉字输入. utf-8 可以编译全球通用的所有语言符号. 由1-6个可变字节组成,有非常严格的排 ...

  2. IIS中 flv、swf 文件无法播放

    解决方案: 1.服务器安装flash,这是必须的. 2.MIME类型添加两个:名称.swf,值application/x-shockwave-flash:名称.flv,值flv-application ...

  3. MVC编程模型

    MVC 编程模型 MVC 是三个 ASP.NET 开发模型之一. MVC 是用于构建 web 应用程序的一种框架,使用 MVC (Model View Controller) 设计: Model(模型 ...

  4. RHEL7 配置网络yum源

    redhat系统安装好尽管默认带有yum,但是redhat的更新包只对注册用户有效(收费).所以需要更换yum源. 基本的流程就是: 1.删除redhat7.0系统自带的yum软件包: 2.自行下载所 ...

  5. [Swift]LeetCode233. 数字1的个数 | Number of Digit One

    Given an integer n, count the total number of digit 1 appearing in all non-negative integers less th ...

  6. [Swift]LeetCode598. 范围求和 II | Range Addition II

    Given an m * n matrix M initialized with all 0's and several update operations. Operations are repre ...

  7. [Swift]LeetCode703. 数据流中的第K大元素 | Kth Largest Element in a Stream

    Design a class to find the kth largest element in a stream. Note that it is the kth largest element ...

  8. [Swift]LeetCode932. 漂亮数组 | Beautiful Array

    For some fixed N, an array A is beautiful if it is a permutation of the integers 1, 2, ..., N, such ...

  9. Python档案袋( Socket 与 ScoketServer 通信 )

    Socket有一个缓冲区,缓冲区是一个流,先进先出,发送和取出的可自定义大小的,如果取出的数据未取完缓冲区,则可能存在数据怠慢.其中[recv(1024)]表示从缓冲区里取最大为1024个字节,但实际 ...

  10. javascript 使用小技巧总结

    按位取反 ~a 即:返回 -(a+1),会去掉小数点. let a = 3.14; let b = ~a; //b = -(3.14+1) 取整 为-4: let c = ~b; //c = -(-4 ...