基于Kebernetes 构建.NET Core技术中台
原文:基于Kebernetes 构建.NET Core技术中台
我们为什么需要中台
我们现在处于企业信息化的新时代。为什么这样说呢?
过去企业信息化的主流重心是企业内部信息化。但现在以及未来的企业信息化的主流重心是企业外部信息化。
中国互联网从1998年算起(新浪搜狐网易都在那一年成立),到现在过去了20年。在这20年里,也就两个阶段。按to C的分法就是PC互联网时代、移动互联网时代,按to B的分法营销时代、交易时代。第一个10年(1998-2008),不管你是搞音乐图片视频,还是你搞新闻、爬虫新闻、博客论坛,本质上就一个事:做内容拉消费者流量然后拉企业广告变现。到了第二个10年(2008-2018),给企业倒流量,企业已经不信了,你给我多少点击量没用,我归根到底还是得看我卖出了多少东西。所以中国互联网进入了交易时代。从2008年之后,中国电子商务公司如雨后春笋爆发,就是因为这个历史大规律背景。从现在开始到未来十年(2018-2028),进入了第三个时代。因为在第二个十年,有了消费者也有了订单了,但是上游生产、采购、研发设计不给力啊。市场机会转瞬即逝,谁快谁就能抓住机会。所以上游生产、采购、研发设计必须要变革,来适应下游消费者订单。这就是中国互联网企业纷纷进入to B市场纷纷进入企业服务领域的根本历史大背景。
中国企业软件,从内部单部门单岗位应用,进化到内部多部门多岗位应用,后来又到整个企业乃至整个企业集团的全部应用。再往大长,就必须要突破企业边界,进化到企业的衣食父母(客户)的信息化,这就是我说的连接客户(消费者),让消费者直接参与到企业IT业务流程处理中。进而再进化到连接企业的上下游,为消费者需求与订单进行通力合作、敏捷互动。最后再进化到连接社会基础设施,如工商税务海关银行、交管车管、国土住建、社保民政、质检安监...。
现在以及未来的企业信息化的主流重心是企业外部信息化:连接消费者、连接产供销研上下游、连接社会基础设施单位。因为要连接消费者。也就是说,消费者在哪里,我们就要连接哪里。这势必造成了IT应用微型化、场景化、碎片化。尤其现在是移动互联网时代,App技术特性决定了流量是被碎片化的不能聚合的。
中国的消费者是巨量的。中国每一个省就相当于欧洲的一个国家的大小、GDP规模、人口数量。我们必须把我们过去铁板一块的应用拆分拆分。与外部连接相关的的应用场景,一定要做成微型化、场景化、碎片化、微服务Open API技术,这样便于快速连接、快速迭代改变。
业务中台
业务中台,主要就是业务支持,比如统一会员、统一认证、统一营销、统一订单、统一库存、统一支付,这些统一的东西来自一个地方,分别支持多个系统对业务的管理要求,不同系统开发的时候,可以直接从这里获取这个功能,而不需要再开发,从而把更多的系统连接在一起。 业务中台使得任何一条业务线都具备整个公司的核心能力。
应用中台
做商业应用级别的基础设施,就必须拥有应用中台,如企业云盘、音视频会议、企业直播、IM、多触点交互机器人、聚合支付、电子发票、电子合同、电子凭证、银企直联...,他们都带有业务应用特征,不是纯技术。但是他们又不是具体的业务场景应用,不是类似零售、制造、人力、财税、OA、供应链、CRM等等。
技术中台
腾讯组织架构调整中,我印象比较深刻的是“腾讯成立技术委员会,通过内部分布式开源协同,加强基础研发,打造具有腾讯特色的技术中台等一系列措施,促成更多协作与创新”。
技术中台,过去我们把他们叫做技术平台。它是企业应用的技术平台。
为啥过去叫技术平台,现在就叫技术中台了呢?
因为过去技术平台是恒定的。也就是说,你发布了一个版本,你用一年它也是这个功能能力,你用十年它也是这个功能能力,功能能力是不变的。 但是,有了数据和AI驱动,这个技术平台就不恒定了。它里面的很多功能特性就在天天进化、天天模型、参数在自动调节。所以我们就把技术平台升级到了技术中台的概念层面。
不要把中台部署到企业内部私有环境中,这是错误的方向,这是老旧的技术平台的思维。如果部署在企业内部私有环境中,它就接受不到社会360度海量数据的训练了,它只能接受你这一家企业单点的数据训练了,所以它就成三岁小孩了,智力不增长了。
如果你部署在公有云或者专属云上,就会接受我们日常360度的数据训练,它的智力就会天天进化,随着社会动态变化不断自动调节适应了。
你可以把和外部连接的应用放到公有云上,因为他们是外部连接型的,你把他们放到你的内部私有环境中他们就跑不起来了。
你当然可以把你只内部的应用放到你的内部私有环境中。要把公有外部连接的应用和纯内部使用的应用连接在一起,这就需要到了技术中台。按照这个角度来看,中台也不应该部署在私有环境中啊。它一定要放在混合云环境中,这样才方便公有云应用和私有云应用连接打通。
在技术中台这里,最核心的就是集成中台:
1、集成各类企业内部ERP
2、集成各类公有云SaaS
3、集成各类互联网电子商务Open API
4、对外统一开放API,便于外部生态应用接入与融合
你看,大量都是内外连接能力,需要经常变动、需要内外通畅。
数据中台
所谓的数据中台,是带有产业主数据、画像标签、业务模型、业务算法的。
数据中台,利用获取的各类信息、行为习惯信息和算法,获取分析结果,比如业务中台参照的客户标准和分类方法就是基于数据中台运算的分析结果,例如需求偏好(客户标签)。 数据中台的数据来自业务系统,有原始数据(不同频次的历史快照+实时数据)、共享数据(拉到一起)、萃取数据(已经整理的标准化数据、标签、模型),再反哺给业务中台用起来。以精准营销为例,数据中台支持算法,业务中台基于算法的结果,支撑实时推荐。
基于K8s&.NET Core搭建技术中台
深圳市友浩达科技有限公司根据企业在架构、技术、研发、运营、业务发展等方面的实际需求,打造“容器”+“微服务”+“AI”的创新性解决方案。
友浩达微服务能力中台基于腾讯云容器服务TKE 领先的 Docker容器技术和.NET Core 微服务架构方案,以及 AI 引擎和大数据服务能力,为企业提供了大型应用微服务化运维和管理能力、容器集群管理、容器部署、服务运维、持续集成、持续部署、租户隔离、微服务治理、APM 性能管理、AI 模型服务等功能,赋能企业应用敏捷落地,助力企业数字化、智能化转型。
1、使用TKE 搭建的统一容器 PaaS 平台,将软件从底层硬件中解耦,提供更好的可移植性和速度,打造轻量、快速、高效、友好的服务运行及开发环境,极大的降低了运维成本;
2、开发微服务架构应用,实现多个微服务组件可以独立部署,通过统一通信协议互相连接,保证独立性和高可用性,同时简化了部署、监控、运维、治理与微服务应用生命周期的管理;
3、使用微软先进成熟的Azure DevOps 产品,重新规划设计开发测试运维的工作流程,优化开发测试标准的同时将日常繁琐的重复性工作交由平台来自动化完成,包括源代码管理、自动化构建、自动化测试、持续集成、持续部署等,显著的提高了应用系统的开发迭代效率;
4、基于 Kubernetes 核心支撑能力,实现对于应用服务的灰度发布、滚动升级、弹性伸缩、故障自愈、配置管理、服务高可用等多种治理手段,提供了统一的企业IT管理平台,提高了企业IT管理效率;
5、基于.NET Core的高效率开发微服务,高性能运行的微服务系统开发
技术中台架构以K8S+Docker容器化技术为基础构建运行支撑平台,基于容器化技术的灵活伸缩能力数据集成、服务集成、数据利用、公共服务、DevOps,形成企业级的技术中台。总体架构图如下:
服务网关是所有应用系统对外访问的流量入口,能够实现各个应用的访问,以及应用之间的相互访问能力,并且整体提升访问的安全性,总体访问过程如下图:
为什么选择.NET Core
说到技术栈,脑海中是不是浮现的是这样一幅图?
有点眼晕,以下只是我们会用到的一些语言的合集,而且只是语言层面的一部分,就整个技术栈来说,这只是一个开始,从语言开始,还有很多很多的内容。
整个技术栈我的理解包括 4 个层面的内容:
语言: 用了哪些开发语言,如:C++/C#/Java/Go/PHP/Python等等;
组件:用了哪些组件,如:消息队列组件,数据库组件等等;
流程:怎样的流程和规范,如:开发流程,项目流程,发布流程,监控告警流程,代码规范等等;
系统:系统化建设,上面的流程需要有系统来保证,如:规范发布流程的发布系统,代码管理系统等等;
在创业公司,没有大公司那些完善的基础设施,需要我们从开源社区,从云服务商甚至有些需要自己去组合,去拼装,去开发一个适合自己的组件或系统以达成我们的目标。
选择合适的语言
选择团队熟悉的/能掌控的,创业公司人少事多,无太多冗余让研发团队熟悉新的语言,能快速上手,能快速出活,出了问题能快速解决的问题的语言才是好的选择。
选择更现代一些的,这里的现代是指语言本身已经完成一些之前需要特殊处理的特性,比如内存管理,线程等等。
选择开源轮子多的或者社区活跃度高的,这个原则是为了保证在开发过程中减少投入,有稳定可靠的轮子可以使用,遇到问题可以在网上快速搜索到答案。
选择好招人的 一门合适的语言会让创业团队减少招聘的成本,快速招到合适的人。
选择能让人有兴趣的 与上面一点相关,让人感兴趣,在后面留人时有用。
选择合适的组件和云服务商
选择靠谱的云服务商;
选择云服务商的组件;
选择成熟的开源组件,而不是最新出的组件;
选择采用在一线互联网公司落地并且开源的,且在社区内形成良好口碑的产品;
开源社区活跃度;
选择了云服务商以后,就会有很多的产品你可以选择了,比较存储,队列这些都会有现成的产品,这个时候就纠结了,是用呢?还是自己在云主机上搭呢?在这里我的建议是前期先用云服务商的,大了后再自己搞,这样会少掉很多运维的事情,但是这里要多了解一下云服务商的组件特性以及一些坑,比如他们内网会经常断开,他们升级也会闪断,所以在业务侧要做好容错和规避。
关于开源组件,尽可能选择成熟的,成熟的组件经历了时间的考验,基本不会出大的问题,并且有成套的配套工具,出了问题在网上也可以很快的找到答案,你所遇到的坑基本上都有人踩过了。
基于Kebernetes 构建.NET Core技术中台的更多相关文章
- 基于Kubernetes 构建.NET Core技术中台
今天下午在腾讯云+社区社区分享了<基于Kubernetes 构建.NET Core技术中台>,下面是演讲内容的文字实录. 我们为什么需要中台 我们现在处于企业信息化的新时代.为什么这样说呢 ...
- 基于Kubernetes 构建.NET Core 的技术体系
很多公司技术支持岗位的工作,如配置域名,部署环境,修改复位配置,服务重启,扩容缩容,梳理和完善监控,根据开发的需要查找日志等工作,需要和开发进行大量的沟通,如什么是外网域名,什么是内网域名.A nam ...
- 基于 fireasy 构建的 asp.net core 示例
最近花时间弄了一个关于fireasy使用的demo,已放到 github 上供大家研究,https://github.com/faib920/zero 该 demo 演示了如何使用 fireasy 创 ...
- EntityFramework Core技术线路(EF7已经更名为EF Core,并于2016年6月底发布)
官方文档英文地址:https://github.com/aspnet/EntityFramework/wiki/Roadmap 历经延期和更名,新版本的实体框架终于要和大家见面了,虽然还有点害羞.请大 ...
- [转]EntityFramework Core技术线路(EF7已经更名为EF Core,并于2016年6月底发布)
本文转自:http://www.cnblogs.com/VolcanoCloud/p/5572408.html 官方文档英文地址:https://github.com/aspnet/EntityFra ...
- 基于 Golang 构建高可扩展的云原生 PaaS(附 PPT 下载)
作者|刘浩杨 来源|尔达 Erda 公众号 本文整理自刘浩杨在 GopherChina 2021 北京站主会场的演讲,微信添加:Erda202106,联系小助手即可获取讲师 PPT. 前言 当今时 ...
- 基于slate构建文档编辑器
基于slate构建文档编辑器 slate.js是一个完全可定制的框架,用于构建富文本编辑器,在这里我们使用slate.js构建专注于文档编辑的富文本编辑器. 描述 Github | Editor DE ...
- 基于Azure构建PredictionIO和Spark的推荐引擎服务
基于Azure构建PredictionIO和Spark的推荐引擎服务 1. 在Azure构建Ubuntu 16.04虚拟机 假设前提条件您已有 Azure 帐号,登陆 Azure https://po ...
- Feathers JS – 基于 Express 构建数据驱动的服务
Feathers 是一个轻量的 Web 应用程序框架,基于 NodeJS 最流行的 Web 框架——Express.这使得它很容易使用 socket.io 来创建 RESTful Web 服务和实 ...
随机推荐
- 阿里巴巴大数据产品最新特性介绍--机器学习PAI
以下内容根据演讲视频以及PPT整理而成. 本次分享主要围绕以下五个方面: PAI产品简介 自定义算法上传 数加智能生态市场 AutoML2.0自动调参 AutoLearning自动学习 一.PAI产品 ...
- 前缀后缀——cf1167E
想了很久没弄明白,对于边界的情况还是有问题 等题解出了再看看 然后枚举每个后缀r,找到比它小,并且在其左边的前缀l,那么删<=l,r-1的都可以 最后的二分很迷:要多考虑特殊情况:前缀跑到后缀后 ...
- JavaScript中数组的基础知识和相关方法
数组基础 数组是大多数语言里面最常见的一种数据结构,它是一个有序的值列表. 创建数组 1.创建字面量数组 let arr=[]; 2.创建构造函数数组 let arr=new Array(); 注 ...
- String类的trim() 方法
用于删除字符串的头尾空白符. 语法:public String trim() 返回值:删除头尾空白符的字符串. public class Test { public static void ma ...
- 《DSP using MATLAB》Problem 8.18
代码: %% ------------------------------------------------------------------------ %% Output Info about ...
- Spring Boot使用Swagger2
1.添加Swagger2依赖 <dependency> <groupId>io.springfox</groupId> <artifactId>spri ...
- JSON对象获取指定元素以及JSON.parse() 与 JSON.stringify() 的区别
利用 JSON.parse(param) 实现 例: var param = { "name" : "张三", "text" : { &qu ...
- Ajax请求Session超时解决
web前端js代码: $.ajaxSetup({ contentType : "application/x-www-form-urlencoded;charset=utf-8", ...
- Java内功修炼系列一拦截器
在动态代理中,我们知道在代理类中,执行真实对象的方法前后可以增加一些其他的逻辑,这些逻辑并不是真实对象能够实现的方法,比如一个租房的用户希望租一套公寓,但是中介所代理的这个房东并没有可以出租的公寓,那 ...
- N!中素因子p的个数 【数论】
求N!中素因子p的个数,也就是N!中p的幂次 公式为:cnt=[n/p]+[n/p^2]+[n/p^3]+...+[n/p^k]; 例如:N=12,p=2 12/2=6,表示1~12中有6个数是2的倍 ...