微服务学习实战笔记 1.1-系统架构篇-技术选型
一、利剑出鞘
从技术采用生命周期的角度来说,随着.NET Core 3.1的发布,有越来越多的厂商开始采用.NET Core, .NET Core 正在跨越技术鸿沟。.NET Core 正是顺应应用程序现代化,应用程序容器化的浪潮而生长,.NET Core非常契合云原生应用的特性:启动速度快,占用内存少,镜像尺寸小。.net生态空前的变好了,所有.net的程序员们,建议直接学习.netcore新技术,不要在呆在.netframework技术泥潭里了,.Net 5 已在路上。
对于本次微服务的学习实战先打算从以下技术层面逐步学习攻克,随着学习的深入和技术的进步会随时进行路线的调整。
二、反向代理/网关
YARP
为什么是YARP 不是 Ocelot ?
YARP是一个帮助创建高性能、可生产并可高度定制的反向代理服务器的库。目前它还处于预览阶段。
YARP是在.net上构建的,使用的是ASP.NET和.NET(.NET Core 3.1和.NET 5.0)的基础结构。YARP 的主要竞争优势是,它被设计成易于定制和通过.net代码调整,以满足每个部署场景的特定需求。
我们希望YARP作为库、项目模板和单文件exe发布,从而为构建健壮、高性能的代理服务器提供多种选择。它的管道和模块的设计使您可以根据需要定制功能。例如,虽然YARP支持配置文件,但我们希望许多用户能够基于自己的配置管理系统以编程方式管理配置,YARP将提供配置API来启用该定制。YARP将可定制性设计为主要场景,而不是要求您编写脚本或从源代码重新构建库。
三、服务注册与发现
Consul
Consul是基于GO语言开发的开源工具,主要面向分布式,服务化的系统提供服务注册、服务发现和配置管理的功能,Consul的核心功能包括:服务注册/发现、健康检查、Key/Value存储、多数据中心和分布式一致性保证等特性。
四、服务通讯方式
服务通讯RPC框架主要三大核心,序列化、通信细节隐藏、代理。
协议支持分为TCP和HTTP、HTTP2。
目前常用序列化有JSON、MessagePack、 protobuf 等。
.Net Core 主要有 Asp.Net Core WebApi 、 gRPC for .NET 及一些第三方RCP组件等技术。
目前对内因为全部打算用.Net Core 故准备采用 Orleans(资料好像比较少,不知能否驾驭的了,不过看官方宣传功能和性能还是不错的,先学习学习看看),对外接口采用 Web Api 。
五、应用程序
1、SPA单页面应用程序
前端准备采用SPA单页面应用程序,技术选用新出的Blazor,不了解可以看看这里(通过Blazor使用C#开发SPA单页面应用程序(1) - 简介及特点),前端组件选用 Ant Design Blazor 。
待续。。。。。。