微服务开发的关注点有哪些?
微服务构最终的目标是实现业务的价值,交付,为了让开发人员更加关注业务开发和交付,微服务需要一些比较底层的基础设置,我们也称为微服务公共关注点。
配置管理:对微服务可变参数进行配置管理。比如各种开关、数据库连接等。
服务发现和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很强大的,需要掌握和学习的技术。