微服务
定义:
它是一种架构模式,提倡将大的单体系统,按业务拆分成一个个较小且独立的服务,服务与服务之前进行相互协作和配合。
历史:
针对互联网行业的蓬勃发展,需要支撑的业务越来越多,越来越大,单体程序越来越难以支撑,因此才出现了微服务的这种架构。
优点:
它的优点主要是与单体程序相比
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客户端即mysql提示符下执行操作系统命令

    环境描述: mysql版本:5.5.57-log 操作系统版本:Red Hat Enterprise Linux Server release 6.6 (Santiago) 需求描述: 在mysql的 ...

  2. .NET 应用架构电子书中文版

    <.NET 微服务:容器化 .NET 应用架构指南> 本书主要介绍了基于容器和微服务的应用架构和设计原则,以及基于 .NET Core 和 Docker 容器的应用程序开发实践.为了让大家 ...

  3. 【javascript】函数中的this的四种绑定形式 — 大家准备好瓜子,我要讲故事啦~~

       javascript中的this和函数息息相关,所以今天,我就给大家详细地讲述一番:javascript函数中的this   一谈到this,很多让人晕晕乎乎的抽象概念就跑出来了,这里我就只说最 ...

  4. Python公众号开发(二)—颜值检测

    上篇文章,我们把自己的程序接入了微信公众号,并且能把用户发送的文本及图片文件原样返回.今天我们把用户的图片通过腾讯的AI平台分析后再返回给用户. 为了防止我的文章被到处转载,贴一下我的公众号[智能制造 ...

  5. [Swift]LeetCode913.猫与老鼠 | Cat and Mouse

    A game on an undirected graph is played by two players, Mouse and Cat, who alternate turns. The grap ...

  6. Kubernetes 笔记 06 豌豆荚之旅(一)

    本文首发于我的公众号 Linux云计算网络(id: cloud_dev),专注于干货分享,号内有 10T 书籍和视频资源,后台回复「1024」即可领取,欢迎大家关注,二维码文末可以扫. Hi,大家好, ...

  7. MySQL下载、安装和登录详解

    MySQL是一个小型的数据库管理系统,由于其体积小,速度快,尤其是开放源代码等优点,使得其在开发中得到广泛的使用,本文主要介绍MySQL数据库从下载到安装及通过命令行的使用等. 一.下载部分 下载链接 ...

  8. Python—day18 dandom、shutil、shelve、系统标准流、logging

    一.dandom模块 (0, 1) 小数:random.random() [1, 10] 整数:random.randint(1, 10) [1, 10) 整数:random.randrange(1, ...

  9. Pycharm、IDEA等汉化教程

    本汉化教程对jetbrains全系列可用:IDEA.Pycharm.WebStorm.phpstorm.AndroidStudio.GoLand.RubyMine.CLion 此汉化无副作用,绝对安全 ...

  10. Python内置函数(66)——vars

    英文文档: vars([object]) Return the __dict__ attribute for a module, class, instance, or any other objec ...