undefined

面向服务的架构(SOA)

微服务

微服务是一种用于构建应用的架构方案。
微服务架构有别于更为传统的单体式方案,可将应用拆分成多个核心功能。
每个功能都被称为一项服务,可以单独构建和部署,这意味着各项服务在工作(和出现故障)时不会相互影响。

微服务架构不只是应用核心功能间的这种松散耦合,它还涉及重组开发团队、涉及如何进行服务间通信以应对不可避免的故障、满足未来的可扩展性并实现新的功能集成。

两者区别

微服务可以相互通信,而且这种通信通常是无状态的。

https://www.redhat.com/zh/topics/microservices/what-are-microservices

undefined

Consul简介

Consul是HashiCorp公司推出的开源工具,用于实现分布式系统的服务发现与配置。Consul是分布式的、高可用的、 可横向扩展的。它具备以下特性:

  • 服务发现: Consul提供了通过DNS或者HTTP接口的方式来注册服务和发现服务。一些外部的服务通过Consul很容易的找到它所依赖的服务。

  • 健康检测: Consul的Client提供了健康检查的机制,可以通过用来避免流量被转发到有故障的服务上。

查看更多

undefined

无锁队列的各种实现:https://km.woa.com/group/492/articles/show/152881?kmref=search&from_page=1&no=2

无锁编程和有锁编程效率对比:https://blog.csdn.net/cws1214/article/details/47680773?utm_source=blogxgwz8

Java ConcurrentLinkedQuere 实现:https://zhuanlan.zhihu.com/p/363966956

c++11 中的 atomic:https://www.yuanguohuo.com/2019/07/08/cpp11-atomic/

c++11中的原子交换函数 compare_exchange_weak 和 compare_exchange_strong:https://blog.csdn.net/feikudai8460/article/details/107035480

查看更多

undefined

数据库

池化技术:如何减少频繁创建数据库连接的性能损耗?
数据库优化方案(一) :查询请求增加时,如何做主从分离?
数据库优化方案(二) :写入数据量增加时,如何实现分库分表?
发号器:如何保证分库分表后ID的全局唯一性?
NOSQL:在高并发场景下,数据库和NoSQL如何做到互补?

查看更多

undefined

软件架构指软件系统的顶层(Rank)结构,它定义了系统由哪些角色(Role)组成,角色之间的关系(Relation)和运作规则(Rule)。

架构设计的主要目的是为了解决软件系统复杂度带来的问题。

对于架构师来说,常见系统的性能量级需要烂熟于心,例如nginx负载均衡性能是3万左右,mc的读取性能5万左右,kafka号称百万级,zookeeper写入读取2万以上,http请求访问大概在2万左右。 具体的数值和机器配置以及测试案例有关,但大概的量级不会变化很大。

undefined

面向切面编程

AOP(Aspect Oriented Programming)

一、概念

面向切面编程是一种通过横切关注点(Cross-cutting Concerns)分离来增强代码模块性的方法,它能够在不修改业务主体代码的情况下,对它添加额外的行为。

问题:比如一个系统提供很多接口,但是这些接口都有一些共性的逻辑,比如:鉴权、事务控制等。AOP 可以让我们把公共的功能,彻底拿出来,放到单独的地方,这样整个系统流程就变得纯粹和干净。

AOP 在 Java 世界谈论较多,但它并不是 Java 范畴的概念,他不依赖任何框架,也和编程语言本身无关。