建立网站用英语,南京做机床的公司网站,农林科技公司网站模板,网站如何集成微信支付很多文章介绍云原生概念#xff0c;说它包含微服务#xff0c;又包含了其它几个方面的东西#xff0c;还扯到文化层面、组织层面和技术层面#xff0c;搞技术的人一听到公司文化问题和组织部门问题#xff0c;就十分地晕眩#xff0c;不能让我好好地坐下来写写代码、搞搞… 很多文章介绍云原生概念说它包含微服务又包含了其它几个方面的东西还扯到文化层面、组织层面和技术层面搞技术的人一听到公司文化问题和组织部门问题就十分地晕眩不能让我好好地坐下来写写代码、搞搞纯技术吗 记得微服务是2013年大火起来的搞Java企业应用系统开发的人们都痴迷于这一新概念从2014年到2018年我也特别喜欢弄这一个新架构痴迷于MartinFlower那颗大树上的茂密藤曼希望它杀死我面前的一切单体应用一次次研读Chris Richardson的微服务架构系列文章实际工作中使用了Dubbo和SpringCloud两个框架总体感觉微服务架构的概念还是比较内聚的SpringCloud在官网号称它是最完整的微服务框架 And don’t forget, no microservice architecture is complete without Spring Cloud ‒ easing administration and boosting your fault-tolerance. 我们就用SpringCloud来看看微服务的主要概念
服务注册与发现——Netflix Eureka客服端负载均衡——Netflix Ribbon断路器容错——Netflix Hystrix服务网关——Netflix Zuul分布式配置——Spring Cloud Config分布式日志追踪——Spring Cloud Sleuth 我所理解的微服务架构知识主要是这6个方面其它的我都不关心就算是这6个方面也不好实现让我难受的是
SpringCloud从Netflix接收过来的东西名字都怪怪的让人难受Netflix Hystrix断路器实际搞起来特麻烦反正我就没真正去实现过Spring Cloud Config的实现也让人难受在客户线上环境安装SVN或GitLab真的有点怪怪的。Spring Cloud Sleuth分布式日志追踪开发人员不用不关心运维人员不懂不关心所谓的DevOps实际搞起来没那么融洽。 很多技术主管和架构师都号称搞微服务到底搞到什么程度了我估计都是实际搞一半吹嘘一半。但反过来讲搞一半是不是就够了我们最终目的不就是软件交付嘛按时向客户交付功能正确和性能可接受界面不要太难看解决企业和用户的实际问题就是项目成功了嘛客户管你是用单体架构还是微服务架构呢。 还有不是做互联网系统而是给企事业做应用系统的系统的特点是功能多、用户少根本就没几个人来访问所以流量大而要做负载均衡就谈不上真正解决的问题其实就是大单体带来的开发维护难问题按功能内聚原则分拆设计就好了按大功能点搞成一个个微服务就OK所以做企业应用系统真正需要的微服务组件最少简化到 服务注册与发现——Netflix Eureka 服务网关——Netflix Zuul 所以我们不是什么时候都要搞全家桶的学习起来还是很痛苦的根据20/80原则公司至少有80%的人是混日子不学习的对他们来说越简单越好其实SpringMVC搞单体对他们来讲是最好的只是奈何他们不是技术总监或技术经理。 微服务讲了这么多我们用SpringCloud框架或其它微服务框架开发了一个应用系统搞了一堆微服务组件怎么发布怎么部署 翻遍Spring官网都不见有大篇幅介绍系统部署的文章 好了我认为云原生技术知识就是刚好来解决这个下半场的问题。上半场是开发测试下半场是部署交付软件公司难道不就是干这两件大事吗 能想到的有多少种部署方式 1单机部署把所有的微服务组件进程都部署在一台机器上不行吗操作系统本来就是可以运行多进程的所以你喜欢自然行但是这台机器故障垮了就全完了。 2多机部署搞N台硬件服务器安装上Linux系统根据所有硬件的资源情况精细规划各个微服务组件应该分布到哪些节点上去然后手工去每台机器安装JDK配置好各种环境最后手工去部署jar或war一个分布式集群就形成了不行吗可以就是太累太烦。比如使用不同的JDK版本同时部署手工搞特麻烦。 3虚拟机部署虚拟机技术出世后VMWare公司兴起同样是N台硬件服务器采用虚拟机方式部署又方便一点但是虚拟机的开销还是受不了据说Heroku早期是采用这种方式部署的现实中没听说有人采用过。 4容器部署Docker技术横空出世拉开了容器化大幕基于容器的一系列开源技术系统不断涌现应用程序发布打包成容器镜像文件对集群中节点的主机系统依赖几乎微乎其微本身开销相对虚拟机也是非常地小基本上是目前默认采用的部署方式。 那么微服务架构开发出来的应用系统需要怎样的部署技术呢?或者说云原生应用系统需要怎样的部署方式呢 容器化以容器镜像文件方式发布把对目标系统的依赖降低到最小Docker镜像优雅地解决了这一问题。 集群化通过API向一个集群发布而不需要关注到具体的一个个物理节点K8s、Swarm都是管理容器集群的。 服务编排声明式容器编排技术可以对集群中的容器进行自动动态的管理和调度K8s、Swarm的主要功能就是负责容器编排的。 服务发现K8s和Swarm以及配套系统已经直接支持了服务发现根本不用像SpringCloud那样自己去实现。 负载均衡K8s和Swarm也是直接支持了负载均衡根本不用像SpringCloud那样自己去实现。API网关同样基于K8s和Swarm一整套云原生基础系统有现成的方案来支持API网关如Traefik、NGINX Ingress Controller等功能都非常强大。分布式配置K8s直接支持consul等系统也可以用来存放配置通过配置文件变化监控工具可以做到非侵入式配置方式应用程序还是读取本地配置文件比侵入式方式优雅多了。 主要分析以上7个方面对一般中小型云原生应用系统都足够了用不着服务网格等更复杂的技术如限流、熔断、良好的灰度发布支持等一般企业应用系统没必要在这方面耗费精力。 什么是云原生管它什么是标准准确的定义先把上面讲的上下半场都搞好了系统开发发布敏捷起来了能频繁地发布部署一切自动化起来方方面面都比以前好了就自然理解云原生了。如果搞了一通这些技术软件交付更糟糕了那么说明你的系统很简单用单体吧合适才是最好的