微服务架构下处理分布式事务,你必须知道的事儿

微服务架构下处理分布式事务,你必须知道的事儿
根据微服务架构的鼻祖 Martin Fowler 的忠告,微服务架构中应当尽量避免分布式事务。然而,在某些领域,分布式事务如同宿命中的对手无法避免。 在工程领域,分布式事务的讨论主要聚焦于强一致性和最终一致性的解决方案。 典型方案包括: 两阶段提交(2PC, Two-phase Commit)方案。 eBay 事件队列方案。 TCC 补偿模式。 缓存数据最终一致性。 一致性理论 分布式事务的目的是...

放弃Dubbo,选择最流行的Spring Cloud微服务架构实践与经验总结

放弃Dubbo,选择最流行的Spring Cloud微服务架构实践与经验总结
标题:放弃Dubbo,选择最流行的Spring Cloud微服务架构实践与经验总结 Spring Cloud 在国内中小型公司能用起来吗?从 2016 年初一直到现在,我们在这条路上已经走了一年多。 在使用 Spring Cloud 之前,我们对微服务实践是没有太多的体会和经验的。从最初的开源软件云收藏来熟悉 Spring Boot,到项目中的慢慢使用,再到最后全面拥抱 Spring Cloud。 这篇文章给大家介绍我们使用 Spring Boo...

Spring MVC 到 Spring BOOT的简化之路

Spring MVC 到 Spring BOOT的简化之路
背景 从Servlet技术到Spring和Spring MVC,开发Web应用变得越来越简捷。但是Spring和Spring MVC的众多配置有时却让人望而却步,相信有过Spring MVC开发经验的朋友能深刻体会到这一痛苦。因为即使是开发一个Hello-World的Web应用,都需要我们在pom文件中导入各种依赖,编写web.xml、spring.xml、springmvc.xml配置文件等。 特别是需要导入大量的jar包依赖时,我们需要在网上查找各种jar包资源,各个...

Spring Boot (三)模板引擎FreeMarker集成

Spring Boot (三)模板引擎FreeMarker集成
一、FreeMaker介绍 FreeMarker是一款免费的Java模板引擎,是一种基于模板和数据生成文本(HMLT、电子邮件、配置文件、源代码等)的工具,它不是面向最终用户的,而是一款程序员使用的组件。 FreeMarker最初设计是用来在MVC模式的Web开发中生成HTML页面的,所以没有绑定Servlet或任意Web相关的东西上,所以它可以运行在非Web应用环境中。 发展史 FreeMarker第一版在1999年未就发布了,2002年初使用JavaCC(J...

Spring Boot (二)集成Jsp与生产环境部署

Spring Boot (二)集成Jsp与生产环境部署
一、简介 提起Java不得不说的一个开发场景就是Web开发,也是Java最热门的开发场景之一,说到Web开发绕不开的一个技术就是JSP,因为目前市面上仍有很多的公司在使用JSP,所以本文就来介绍一下Spring Boot 怎么集成JSP开发,以及生产环境的详细部署方法。 二、集成JSP 开发环境 Spring Boot 2.0.4 RELEASE Tomcat 9.0.10 IDEA(Intellij IDEA简称,下文统一使用)2018.2 Windows 10 JSP集成步骤 创建JSP目...

Spring Boot (一)快速入门

Spring Boot (一)快速入门
一、关于Spring Boot 在开始了解Spring Boot之前,我们需要先了解一下Spring,因为Spring Boot的诞生和Spring是息息相关的,Spring Boot是Spring发展到一定程度的一个产物,但并不是Spring的替代品,Spring Boot是为了让程序员更好的使用Spring。说到这里可能有些人会迷糊,那到底Spring和Spring Boot有着什么样的联系呢? 1.Spring发展史 在开始之前我们先了解一下Spring,Spring的前身是interface21,这...

轻松理解 Java HashMap 和 ConcurrentHashMap 详细解析

轻松理解 Java HashMap 和 ConcurrentHashMap 详细解析
前言 Map 这样的 Key Value 在软件开发中是非常经典的结构,常用于在内存中存放数据。 本篇主要想讨论 ConcurrentHashMap 这样一个并发容器,在正式开始之前我觉得有必要谈谈 HashMap,没有它就不会有后面的 ConcurrentHashMap。 HashMap 众所周知 HashMap 底层是基于 数组 + 链表 组成的,不过在 jdk1.7 和 1.8 中具体实现稍有不同。 Base 1.7 1.7 中的数据结构图: 先来看看 1.7 中的实现。 这是 Hash...

互联网设计架构过程中 你完全没了解过的日志异步落库

互联网设计架构过程中 你完全没了解过的日志异步落库
前言 在互联网设计架构过程中,日志异步落库,俨然已经是高并发环节中不可缺少的一环。为什么说是高并发环节中不可缺少的呢? 原因在于,如果直接用mq进行日志落库的时候,低并发下,生产端生产数据,然后由消费端异步落库,是没有什么问题的,而且性能也都是异常的好,估计tp99应该都在1ms以内。但是一旦并发增长起来,慢慢的你就发现生产端的tp99一直在增长,从1ms,变为2ms,4ms,直至send timeout。尤...

微服务开发中的数据架构设计

微服务开发中的数据架构设计
前言 微服务是当前非常流行的技术框架,通过服务的小型化、原子化以及分布式架构的弹性伸缩和高可用性,可以实现业务之间的松耦合、业务的灵活调整组合以及系统的高可用性。为业务创新和业务持续提供了一个良好的基础平台。本文包括下面若干内容。 1.微服务技术框架中的多层数据架构设计 2.数据架构设计中的要点 3.要点1:数据易用性 4.要点2:主、副数据及数据解耦 5.要点3:分库分表 6.要点4:多源数据适...

Dubbo和Spring Cloud微服务架构

Dubbo和Spring Cloud微服务架构
微服务架构是互联网很热门的话题,是互联网技术发展的必然结果。它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。虽然微服务架构没有公认的技术标准和规范或者草案,但业界已经有一些很有影响力的开源微服务架构框架提供了微服务的关键思路,例如Dubbo和Spring Cloud。各大互联网公司也有自研的微服务框架,但其模式都于这二者相差不大。 微服务主要的优势如下...