序言
从前文我们知道,在事务运行过程中,数据库设置的隔离级别不同,解决的并发问题也不同。
那么思考一个问题:这些隔离级别在内部到底是如何解决并发问题的呢?
在数据库系统中,是通过 MVCC 和锁机制来解决该问题的。
那么,下面来详细了解下它们吧!
随着技术的不断发展,后端领域慢慢摒弃传统的单体架构,转而开始流行微服务架构模式。
微服务中将服务按业务拆分的理念确实不错,但福祸相依,单体架构转换为微服务架构的过程中,不可避免的会遇到一些问题。
我们首先遇到的一个问题就是——如何去管理这些拆分出来的服务?
假设现在一个系统存在 A、B、C 三个应用,每个应用部署三份,则现在存在了 A1、A2、A3、B1、B2、B3、C1、C2、C3 共九个应用。
这些应用并非各为孤岛,而是彼此联系,需要相互调用,比如 A –> B –> C( A 应用需要调用 B,B 调用 C)。
在调用的时间轴中,不得不考虑以下问题:
经以上分析,我们发现——微服务中迫切需要一个组件来管理大量微服务,这个组件一般被称为注册中心。
除此之外,我们还发现多应用中,冗余了大量重复的的配置属性,比如说:
这些属性部分重复且应用一经发布若想二次修改,则必须重启应用才能生效,另外,不同环境的各种属性配置又不一样。
那么,思考这些问题:
经以上分析,我们发现——微服务中迫切需要一个组件来管理大量微服务的配置属性,这个组件一般被称为配置中心。
那么,市面上有没有一个框架,既可当成注册中心,又可充当配置中心,两全其美的解决上面我们遇到的问题呢?
当然是有滴啦,Nacos 就可以充当这两个角色,并且其更加强大。
人非圣贤,孰能无过?
对程序而言,同样如此,即使一个产品经历了一系列的开发测试工作,在此过程中又遇到并解决了成百上千个 Bug,最终交付给客户并正式上线了,后期还是可能会出现一些问题。
这些问题的产生,可能是客户进行了不符合逻辑的异常操作引起的,也可能是程序代码原先判断逻辑本就存在问题,还有可能是某个应用或服务器资源(CPU、内存、磁盘、网络)出现异常了。但不管怎样,是问题就应当给客户解决,不然客户不满意了,公司的企业形象降低了,若后期还有合作,说不定就泡汤了呢!合作泡汤了,说不定整个业务部门就给你优化掉,程序员就没班上了呢!!!
作为程序员,为了防止被优化的意外发生,还是老老实实的帮客户解决问题吧!
那么,怎么去解决问题呢?
作为一个程序员,接到一个产品问题,想的应该不是解决,而是分析问题的类型,待分析出问题的类型后,才去解决问题。
那么,问题大概又可以分为哪几种类型呢?
笔者认为,其大致可以分为以下三种:
现在,我们得到了一个结论——问题的存在形式是多种多样的,因此我们遇到问题不能局限在某一块思考(后端开发不能碰到问题就想的是看日志,得明确是后端问题才去看日志),因为不同的问题解决方案也不一样。
由于只有在大致分析出问题的类型后,才能尝试去解决问题:
那么,又该如何去观察服务器在某段运行时间里的资源情况是怎样的呢?
这个时候,就需要布置一套监控系统来辅助我们程序员观察分析了。