云原生基础:
什么是云原生(Cloud Native)?
云原生之所以解释不清楚,是因为云原生没有确切的定义。云原生一直在发展变化之中,解释权不归某个人或者组织所有。如果要理解Cloud Native,首先就要理解字面的意思,大概意思是:
①、首先生在云上,不是在本地
②、本身生在云上,不是在本地
③、天生长在云上,不是在本地
④、土生土长在云上,不是在本地
部署在哪台机器,哪台IP是不确定的,由统一的k8s来管理的。
如果是确定的是在本地,确定的物理机器部署,确定的物理资源叫做本地。
所以,这个概念,是建立在 云基础设施基础上的,云基础设施有:虚拟服务器,虚拟容器等,代表作就是K8S。好,接下来,就看看官方介绍的什么是云原生。
①、微服务:应用间通过RESTfulAPI通信。可以独立部署,更新,scale和重启。
②、Devops:自动化发布管道,CI工具;快速部署到生产环境;开发,运维协同合作。
③、持续交付:频繁发布,快速交付,快速反馈,降低发布风险
④、容器化:微服务的最佳载体
云原生架构师的庞大需求:
java场景:
问题描述:
①、如果在软件架构设计没有遵循软件架构设计的七大原则,没有进行分层设计,容易造成软件系统性能差,稳定性不足和难以扩展等问题
②、为了解决这些问题,提出了SpringCloud实现的分布式微服务架构来解决安全,性能,可用性,和云化等问题的技术方案。
③、沉淀安全管控,RPC统一调用,高并发编程,高可用数据库,云端自动化等关键技术:SpringCloud+容器化+K8S。
验收标准:
①、要求基于SpringCloud技术栈来实现,具备网管作为流量入口,管控安全策略SpringCloud gateway实现鉴权:私钥公钥的模式,安全控制
②、要求具备多个微服务,微服务可以根据需要弹性伸缩,个别节点宕机不能影响系统的连续服务, K8S HPA进行自动伸缩。基础实施的高可用,比如基于吞吐量,cpu来弹性伸缩。
③、要求系统接口处理响应平均时间在200ms内,并发量不得低于1500tps :比方说使用redis实现,或者+mq解耦,解决并发量:使用多节点实现高吞吐
④、要求实现自动化流水线,贯穿整个研发流程,并能够兼容云端容器化的要求:gitlab+harber:制品库+jenkins+ingress灰度。实现快速部署 :CI/CD流水线
多语言的场景:
①、服务治理的框架就不是springcloud而是istio。
②、服务网格可以把springboot应用和边车结合起来,主要的通讯是grpc协议。把springboot应用通过grpc集成到istio框架里面去,不用springcloud微服务框架
云原生架构师最好也掌握:各种调度器:golang自定义开发也是用了调度器,operator的使用:比如:基于吞吐量自动伸缩也用了operator,自定义资源:operator用了自定义资源。技多不压身。