《2019年微服务快速开发框架的设计.pdf》由会员分享,可在线阅读,更多相关《2019年微服务快速开发框架的设计.pdf(26页珍藏版)》请在三个皮匠报告上搜索。
1、.NET Core 2019China.NET Conf 2019微服务快速开发框架的设计开发框架-what?框架(Framework)整个或部分系统的可重用设计,表现为一组抽象构件及构件实例件间交互的方法;另一种定义认为,框架是可被应用开发者定制的应用骨架。(来自度娘)China.NET Conf 2019框架的主要特点和要求代码模板化-统一的代码风格重用高内聚(封装)规范可扩展可维护协作开发通用性China.NET Conf 2019分分钟“搞定”一个开发框架打开电脑,找到“宇宙第一”IDEVisusal studio的图标,双击启动它,然后请单击“文件”-“新建”-项目,选择.net c
2、ore web项目然后,起个名字,选择保存的目录,再“下一步”,再“下一步”China.NET Conf 2019开发框架的构成组件China.NET Conf 2019一个真正可以使用的框架,必须是功能完备的操作数据库记日志缓存的存取常用小工具集NoSql的支持对依赖的第三方系统的解耦(暂时还没有想到)China.NET Conf 2019一个真正可以使用的框架,必须是功能完备的操作数据库DbHelperDbHelper(ADO.netADO.net、EFEF、Dapper.)Dapper.)记日志txt/databasetxt/database、log4net/log4net/nlognl
3、og缓存的存取 memorymemory、memcahememcahe or or redisredis?常用小工具集 Md5/Md5/JsonHelperJsonHelper/DateTimeHelperDateTimeHelper/NoSql的支持 MongoDbHelperMongoDbHelper对依赖的第三方系统的解耦 消息队列消息队列(RabbitMQ(RabbitMQ、ZeroMqZeroMq)(暂时还没有想到)China.NET Conf 2019三层架构&画图-一图胜千言China.NET Conf 2019系统架构图v1.0数据库Redis数据层(DAL)业务逻辑层(BLL
4、)表示层(UI/View)客户端客户端客户端客户端Log FilesChina.NET Conf 2019系统架构图-v1.1数据库Redis数据层(DAL)业务逻辑层(BLL)APIsH5PCWebSiteAppsLog FilesChina.NET Conf 2019系统架构图-v1.2数据库Redis数据层(DAL)业务逻辑层(BLL)APIsH5PCWebSiteAppsLog Files权限控制消息队列China.NET Conf 2019代码结构图Web APIServiceAPI.IServiceAPI.ServiceFrameworkIFrameworkLogFramework
5、ModelAPI.ContractModelDataAccessAPI.IRepositoryAPI.MongoDbRepositoryAPI.MySqlRepositoryAPI.SqlServerRepositoryAPI.PostSqlRepositorySystemCodesContractModelEntityExceptionsRepositorySharedToolsChina.NET Conf 2019架构范式的改变China.NET Conf 2019从单体到微服务单体架构APIs(api1,api2,api3)BLLDALLog Files微服务架构China.NET Co
6、nf 2019微服务的优势1.技术异构性:微服务可以轻松采用不同的技术栈。(C#/Java/PHP/Golang/)2.弹性:一个服务不可用不会导致整个系统不可用。(断胳膊少腿,也死不了)3.扩展:可以只针对那些需要扩展的微服务进行扩展。4.简化部署:不用重新部署整个应用,只需要部署个别服务,并可以快速回滚。5.与组织结构相匹配:符合康威定律(请找度娘)。6.可组合性:对已有功能组合实现新的应用。7.可替代性:重新实现某个服务相对容易些。China.NET Conf 2019微服务的挑战1.版本:各个微服务应该用统一版本号呢,还是各自独立版本?2.代码:重复的代码怎么办?(这还用问吗?抽出来,
7、新耦合?)3.界面:服务拆分了,那用户界面怎么办?4.数据:各服务是共享数据还是独占数据?(如果共享,这将成为耦合的点?)5.分布式:微服务架构是典型的分布式架构。6.监控:监控对于微服务架构十分重要。(甩锅必备,死道友莫死贫道!)7.安全:服务之间的调用,能信任吗?China.NET Conf 2019系统架构图(微服务)-v2.0移动客户端PC客户端物联网设备微服务API事件/消息微服务微服务持久存储API持久存储API事件/消息微服务微服务API应用China.NET Conf 2019回头思考下,我们的框架应该怎么改,还缺少哪些东西?操作数据库DbHelperDbHelper(ADO.
8、netADO.net、EFEF、Dapper.)Dapper.)记日志txt/databasetxt/database、log4net/log4net/nlognlog缓存的存取 memorymemory、memcahememcahe or or redisredis?常用小工具集 Md5/Md5/JsonHelperJsonHelper/DateTimeHelperDateTimeHelper/NoSql的支持 MongoDbHelperMongoDbHelper对依赖的第三方系统的解耦 消息队列消息队列(RabbitMQ(RabbitMQ、ZeroMqZeroMq)(暂时还没有想到)Chi
9、na.NET Conf 2019记日志ELKELK(Elastic+LogStash+KibanaElastic+LogStash+Kibana)微服务的管理(注册和发现)配置信息的管理(配置中心)对调用链条上的API节点进行监控(甩锅之必备)容器化灰度发布容错机制&重试机制回头思考下,我们的框架应该怎么改,还缺少哪些东西?China.NET Conf 2019回头思考下,我们的框架应该怎么改,还缺少哪些东西?记日志ELKELK(ElasticSearch+LogStash+KibanaElasticSearch+LogStash+Kibana)微服务的管理(注册和发现)Consul(Ocel
10、ot)/Eureka(Consul(Ocelot)/Eureka(SteeltoeSteeltoe)配置信息的管理(配置中心)ApolloApollo(携程的阿波罗)(携程的阿波罗)/keydbkeydb对调用链条上的API节点进行监控(APM)ZipKinZipKin/PinpoitPinpoit/SkyWalkingSkyWalking/Cat/Cat容器化Kubernetes(k8s)Kubernetes(k8s)灰度发布Kubernetes(k8s)+Kubernetes(k8s)+IstioIstio/自己动手自己动手服务间通信&容错机制&重试机制消息队列是个好东西(消息队列是个好东
11、西(RabbitMQRabbitMQ有话说)有话说)China.NET Conf 2019从开发框架到开发平台开发框架代码脚手架(尽可能的简洁&易用)武器库X.AutoMapperX.Pinpoint.AgentX.Configuration.YamlX.RabbitMQX.CoreBase/Extensions X.RedisX.CoreBase.MetricsX.ZipKinClientX.DapperXLog.KafkaX.NlogX.OcelotX.MongoDB 基础设施服务ELK日志集群高可用Redis集群 MQ(Paas)Metrics ServerPinpoint集群Eurek
12、a集群Apollo配管中心 China.NET Conf 2019系统架构图-v2.xNgnixUINgnixGatewaySSODBDBDB持久存储基础组件(服务)微服务微服务微服务微服务X.MySqlRepositoryX.RabbitMQX.AutoMapperX.Redis中台业务处理依赖层(服务)China.NET Conf 2019他山之石China.NET Conf 2019我们的框架能否更简单、更智能化地被用户使用?China.NET Conf 2019小结框架的意义:让开发人员的精力更专注于业务功能的实现;框架的选择:适合的框架才是最好的框架;终极目标:搞个自己的CPU,代码想怎么写,就怎么写!小小的感悟:遇到好的框架(代码)请不要错过,多多临摹并尝试下微创新;Thank You!China.NET Conf 2019