开发工具: VS2017 .Net Core 2.1
什么是微服务?
单体结构:
缺点:
1) 只能采用同一种技术, 很难用不同的语言或者语言不同版本开发不同模块;
2) 系统耦合性强, 一旦其中一个模块有问题, 整个系统就瘫痪了; 一旦升级其中一个模块, 整个系统就停机了;
3) 要上线必须一起上线, 互相等待, 无法快速响应需求;
4) 集群只能是复制整个系统, 即使只是其中一个模块压力大;
微服务:
不同模块放到不同的进程 / 服务器上, 模块之间通过网络通讯进行协作.
适用于: 模块比较多, 访问量比较大的互联网类系统, 并不是所有项目都适合微服务
优点:
1) 可以用不同的语言或者语言不同版本开发不同模块;
2) 系统耦合性弱, 其中一个模块有问题, 可以通过 "降级熔断" 等手段来保证系统不血崩;
3) 可以独立上线, 能够迅速响应需求;
4) 可以对不同模块用不同的集群策略, 哪里慢集群哪里.
缺点:
1) 开发难度大, 系统结构更复杂;
2) 运行效率低;(网络通讯没有进程通讯快)
微服务架构要处理哪些问题?
服务间通讯; 服务治理与服务发现; 网关和安全认证; 限流与容错; 监视等
第一代微服务: Dubbo(Java),Orleans(.Net) 等 和语言绑定紧密;
第二代微服务: Spring Cloud 等 适合混合开发
第二代微服务: Service Mesh(Service Fabric(微软内部使用的, 开源的),lstio,Conduit 等)
目前: 第三方微服务还在快速发展中, 更新迭代比较快 (还不完善)
.NetCore 微服务选型
为什么是. net Core? 虽然. Net Framework 也可以实现微服务, 但是. Net Core 是为云而生, 用来实现微服务更方便, 而且. Net Core 可以跨平台.(.Net Framewordk 不会再有. Net5.x 下一代就是. Net Core)
第二代微服务架构: Consul+Ocelot+.Net Core+Polly+.....;
腾讯. net 大队长张善友把腾讯内部的架构实战整理出一个开源项目 NanoFabric(Github 上可以搜到),NanoFabric 不是一个独立的技术, 它只是帮我们搭建好了, 配置好了的一个脚手架, 只是一个胶水项目, 文档不全, 仅供我们参考.
在 SpringCloud 中: EurekaServer 做服务治理和服务发现, Hystrix 做熔断降级, Zuul 做网关;
在 NanoFabric 中: Consul 做服务治理和服务发现, Polly 做熔断降级, Ocelot 做网关;
在微服务中, 服务之间的通讯有俩种主要形式:
1)Restful, 也就是传输 Json 格式数据..net 中就是对应的 webapi 技术 效率比较低, 数据冗余, 短连接
2) 二进制 RPC: 二进制传输协议, 比 restful 用的 http 通讯效率更高, 但是耦合性更强. 技术有 Thrift,gRPC 等
此文档是根据杨中科老师的. net Core 微服务视频和课件做的记录
来源: https://www.cnblogs.com/uglyman/p/9182485.html