当前位置: 首页 > news >正文

深圳高端网站建设公司排名对ui设计的理解和认识

深圳高端网站建设公司排名,对ui设计的理解和认识,广州知名网站建设有哪些,塑胶网站建设Monolith、SOA、DDD、The two-pizza rule、分库分表这些概念跟微服务有啥关系#xff0c;你知道吗#xff1f;这篇文章记录我的理解#xff0c;分享给大家。微服务#xff08;micro service#xff09;#xff0c;个人感觉也就近几年才吵起来的概念#xff0c;记得退回去… Monolith、SOA、DDD、The two-pizza rule、分库分表这些概念跟微服务有啥关系你知道吗这篇文章记录我的理解分享给大家。微服务micro service个人感觉也就近几年才吵起来的概念记得退回去四五年2014年那时候大家还谈论SOAservice orentied architecture比较多。在SOA之前一个软件系统大多都是前后端不分离的monolith的架构通常采用比如说spring mvc、java SSH (spring/structs/hibernate)、.net framework mvc、.net framework web form等技术方案实现。在计算机这个领域好像每隔一段时间总会有一些概念被炒作起来就像近几年在炒作的微服务、云原生、人工智能AI、区块链等大家都在努力抓住这些风口听说现在有的大学里面学生不发AI相关的论文就不让毕业我想这或许是python近两年在有的语言排行榜超过java成为榜首的原因之一吧。关于微服务架构的概念网上有很多介绍大家可以自行搜索。这里推荐一个业界比较有名的网址Martin Fowler的个人网址https://martinfowler.com/articles/microservices.html。Martin fowler是微服务领域的一个专家它有很多关于微服务方面的研究有兴趣的童鞋可以去他的个人网址上查阅相关资料。那么如何构建一个微服务架构的应用呢基于之前的经验我的总结如下一、掌握好拆分微服务的粒度使得每个微服务相对独立但又是整个业务流程的一部分。怎样才能掌握好这个粒度呢我觉得有一种说法挺有道理从业务角度可以遵循DDDdomain driven development即领域建模按照具体的业务流程来划分从团队组织角度一个团队负责一个或多个微服务团队大小遵循“The two-pizza rule”。二、系统的整体设计需要遵循12 factors原则。三、从系统实现的角度来看考虑下面这些点API GatewayService Registry and Discovery - EurekaCircuit Breaker - HystrixFault Tolerant - HystrixMessage Broker - RabbitMQDatabase - PostgresLogging and Tracing - ELKAuthorization and Authentication - OpenID/SAML/OAuth/JWTSecure Credential Store - VaultSecurity and AuditCI/CD - JenkinsMonitoring - GrafanaContainer Runtime - Docker/CloudFoundry/KuberntesScaling - Vertical scaling/Horizontal scalingProxy and Load Balancer - nginxMulti-Tenancy此外下面是我对微服务相关话题的一些思考一、微服务火了之后业界一直有这样一个问题微服务和SOA的区别到底是什么我个人的理解是这样的SOA出现的背景大约是前后端不分离的monolith应用时代为了解决各个应用系统之间的集成于是就出现了SOAservice oriented architecture意即面向服务的架构idea就是把应用系统当成一个服务来设计这样外部系统就可以很好的来消费这个服务记得那时候把服务暴露出来的常用做法就是SOAP而微服务出现的背景是SOA本质上大多还是monolith架构即是单体应用为了解决单体应用很重的问题出现了微服务。所以SOA是第一阶段服务主要面向系统外部集成而微服务则是第二阶段服务不但面向系统外部同时也面向系统内部。二、微服务和monolith的比较下面是我个人的看法微服务开发效率更高环境setup简单build/checkout/run更快ut/it 时间更短。各个微服务职责分离边界清晰有利于cross team开发特别是对于跨location的协作开发优势更加明显。记得之前有一个monolith的项目代码总共几百万行从git上拉下来都要几十分钟build也很慢ut/it需要跑非常长时间开发效率很低同时也非常不利于实现CI/CD。从扩展性方面来讲微服务既可以水平扩展也可以垂直扩展。而monolith只可以水平扩展。有人说monolith可以利用数据库事务保证强一致性而微服务则不能保证强一致性通常只能保证最终一致性这是monolith的一个优点。我觉得这个点需要辩证的来看因为强一致性有时候也会带来一些性能问题比如事务很大且高并发的情况数据库容易成为瓶颈最终导致吞吐量太低。同时正如我之前写的一篇文章关于分布式系统数据一致性的那些事现实生活中也不可能有一个大而全的系统可以cover所以的场景并且用事务保证强一致性。一个典型的例子银行转账往往需要强一致性单个银行系统可以用数据库事务实现但是跨银行系统转账就不可能利用单机数据库事务因为不同银行系统都是自己的数据库所以即使是银行系统并不能保证强一致性。之前一个同事说他就亲身经历过一次银行系统短时不一致的情况他跨行取钱钱被扣了但是钱没吐出来最后是去柜台人工处理才解决。三、微服务到底是选择共享数据库还是独立数据库下面是我个人的看法如果是共享数据库的话仍然类似于单体设计数据库层面的单体设计数据库层只能水平扩展 容易成为瓶颈比如说锁资源占有、死锁、 DB层面紧耦合导致开发互相影响等。原则上对于微服务系统应该只有API是不同微服务之间的contract如果采用共享数据库就又引入了另外一个层面的contract不容易维护当有其他团队的人改了数据库容易导致意想不到的错。有人说采用共享数据库做报表更方便。是的如果是共享数据库报表生成可以直接基于数据库来做join等操作而如果是独立数据库直接基于数据库的join就不行。但是采用共享数据库也并不意味着报表方便。一般来说报表属于OLAP操作而业务逻辑属于OLTP操作理论上讲列级数据库更适合OLAP操作而行级数据库更适合OLTP操作如果报表这类OLAP操作和业务逻辑OLTP操作同用一个数据库的话大量的OLAP操作会影响OLTP业务处理所以这两类操作分开用各自合适的数据库才能互不影响并且利用不同数据库的优势。记得退回去几年2014年大数据还比较火大家都在炒作这个概念Hadoop、HBase、Spark、HANA等就是那时候的产物其实个人理解大数据就是拿来做OLAP操作的。四、分库分表和微服务的关系当一个系统数据量上去了往往都需要考虑分库分表的事情。因为一旦数据量级上去了数据库很容易就成为瓶颈。所以怎么实现分库分表呢其实微服务本身就是一个很好的分库分表的实现。首先每个微服务独立数据库就是一个层面的分库不同微服务相关的业务数据存在单独的数据库可以一定程度缓解共享数据库的瓶颈。其次一个SaaS系统往往需要考虑多租户一种多租户实现策略就是每个租户拥有自己的独立数据库不同租户的数据就被存在各自独立的数据库这样又是一个层面的分库。其实分库的本质也就是通过一种哈希算法把数据分散到不同的数据库实例上以达到负载均衡的作用。另外有时候通过分库仍然会存在一些表数据量太大的问题比如订单表当数据量太大的时候其读写操作的性能往往会急剧下降这时候就需要做分表了。其实个人觉得分库某些时候也是一种分表除此之外还有一些其它策略比如说我们可以把比较老的数据存到另外一张表去就像一些电商平台用户默认只能看最近三个月的订单等。五、迁移monolith应用到微服务架构如果我们开发一个系统一开始选型就是微服务这样很容易。但是有时候我们需要把一个非常庞大的monolith应用迁移到微服务架构这往往不是一件容易的事情。一般怎么做呢我们需要从多个层面考虑技术层面首先需要仔细思考怎么拆分微服务有时候这会很难因为对于一个庞大的monolith应用之前的实现各个模块之间往往耦合得非常紧其次需要把之前的数据裤拆分为每个微服务独立的数据库这也会很难因为怎么实现数据迁移需要仔细考虑可以参考我之前写过的一篇文章如何不宕机实现数据库迁移。另外团队层面也需要考虑很多比如说团队的组织结构可能需要调整、团队成员的mindset需要buildup等。最后最近各大云厂商都在大力炒作cloud native我查看了一些关于相关介绍感觉其实它和微服务就是换汤不换药其实就是基于微服务的概念然后加了一些容器编排的概念。See https://jimmysong.io/kubernetes-handbook/cloud-native/cloud-native-definition.html。Referenceshttps://martinfowler.com/articles/microservices.html#HowBigIsAMicroservicehttps://docs.microsoft.com/en-us/dotnet/architecture/microservices/microservice-ddd-cqrs-patterns/ddd-oriented-microservicehttps://12factor.net/https://jimmysong.io/kubernetes-handbook/cloud-native/cloud-native-definition.htmlhttps://www.oreilly.com/library/view/microservices-antipatterns-and/9781492042716/ch04.html
http://wiki.neutronadmin.com/news/217788/

相关文章:

  • 邢台市政建设集团股份有限公司网站网站外链什么时候做
  • 公司网站建设调研背景新加坡建设网站
  • 如何建立一个网站根目录企业宣传网站建设图示
  • 做化工回收的 做那个网站小微企业查询系统官网入口
  • 艺术网站建设网站建设大致分哪几块
  • php学校网站模板dede程序网站如何查看百度蜘蛛
  • 企业网站建设费电商合作平台
  • 专业建设家电维修网站公司wordpress对联广告
  • 来宾住房和城乡建设网站帮别人做网站开什么内容的专票
  • 石家庄网站设计制作服务ps高手教学网站
  • 大数据和网站建设建设网站的平台
  • 备案ip 查询网站查询网站做网站需要会什么 知乎
  • 什么网站有设计视频企网站建设
  • 类似于众人帮的做任务赚佣金网站wordpress 简洁文章主题
  • app与网站的关系app定制开发 价格
  • 佛山市和城乡建设局网站网站开发工程师面试题
  • 关于学校网站建设苏州知名网站建设公司
  • 中国建设银行的网站.网站在阿里云备案
  • 海安建设局网站建一个简单的网站多少钱
  • 怎么在华为防火墙做网站映射最好网站建设制作是那个
  • 手机网站如何做优化顺德网站建设多少钱
  • 电子商城网站建议书云南企业网站开发
  • 网站制作比较好的公司江阴网络公司做网站
  • 网站建设咨询哪家性价比高做网站的重点目标
  • protenus代做网站网站系统参数设置
  • 江门网站关键词推广如何建设网站的管理平台
  • 网站的速度凡科建站视频教程
  • 网站版权模板中国电力建设集团股份有限公司网站
  • 如何做网站弹窗tplink域名申请
  • 企业建站模版免费logo设计 u钙