《重新定义Spring Cloud实战》内容简介|作者

内容简介

这是一本实践与理论并重、广度与深度兼顾的Spring Cloud生产实践开发指南,由SpringCloud中国社区倾力打造,作者来自阿里、蚂蚁金服、*金融等企业,本书针对SpringCloud在国内的使用情况,结合国内企业使用Spring Cloud落地微服务架构遇到的问题,提出可落地的解决方案。

本书内容有3大特色:

足够广:详细讲解了Spring Cloud的核心常用组件以及Spring Cloud的增强生态,针对生产实践中常见问题给出可落地的*实践方案,无论您是初学者还是开发人员,还是架构师,都能从此书获益。

有深度:本书对涉及的Spring Cloud组件按照从入门、进阶、实战、扩展增强的顺序循序渐进进行剖析和讲解,帮助作者知其然并知其所以然,授之以渔。

重实践:注重生产实践,通过案例驱动,给出优秀的生产实践方案和优秀的生产配置,帮助读者快速落地企业微服务架构。

全书共25章,分为三个部分:

第一部分核心组件篇(第1~10章)

主要讲解SpringCloud的核心组件。首先从应用架构的发展历程讲起,介绍了微服务出现的背景,并对微服务架构的落地提出了相应的解决方案;然后分别详细介绍了Spring Cloud微服务体系中的核心常用组件,如Eureka、Feign、Ribbon、Hystrix、Zuul等;*后通过一个综合案例将前面介绍的组件连接起来,帮助大家融会贯通。

第二部分进阶实战篇(第11~18章)

在核心组件的基础上,对Config、Consul、认证和鉴权、全链路监控以及对Spring Cloud生态圈中第二代网关Spring Cloud Gateway进行了详细阐述,循序渐进、案例驱动,帮助读者加深对组件的理解和运用,更好地掌握相关内容运用于生产实践。

第三部分解决方案篇(第19~25章)

主要从解决方案着手,内容包括Spring Cloud与gRPC的整合方式、版本控制与灰度发布、Spring Cloud容器化、Dubbo向Spring Cloud的迁移、分布式事务、领域驱动等生产级实用解决方案,为企业IT架构微服务化和变革保驾护航。

作者简介:

许进

Spring Cloud中国社区创始人,阿里原资深工程师,花名玹霖,专注于基础架构与中间件研发,曾就职于唯品会平台架构部和饿了么。个人网站:http://xujin.org。

钟尊发

Spring Cloud中国社区联合创始人,现就职于京东金融,对微服务有深入研究。

叶志远

Spring Cloud中国社区联合创始人,现就职于蚂蚁金服,花名梓尧。CSDN博客专家,开源社区活跃者,国内Spring Cloud早期实践者

方志朋

Spring Cloud中国社区联合创始人,硕士学历,《深入理解Spring Cloud与微服务构建》作者,CSDN博客专家(阅读量600万 ),在社区具有较高活跃度与影响力。

蔡波斯

拥有多年Java开发经验,曾就职于美团、腾讯。国内Spring Cloud领域的早期实践者,现在金融行业从事FinTech相关研发

郭芳碧

多年微服务实践经验,现任职于某互联网金融公司中间件部门。

朱德明

拥有10年Java开发经验,多年技术架构和解决方案经验,现任灵雀云微服务架构师,在微服务领域有着丰富的落地经验,曾任某创业公司技术负责人。

目 录:

Contents 目录

前言

第1章 微服务与SpringCloud1

1.1 微服务架构概述1

1.1.1 应用架构的发展1

1.1.2 微服务架构3

1.1.3 微服务解决方案4

1.2 Spring Cloud与中间件5

1.2.1 中间件概述5

1.2.2 什么是Spring Cloud5

1.2.3 Spring Cloud项目模块5

1.2.4 Spring Cloud与服务治理

中间件6

1.2.5 Spring Cloud与配置中心

中间件6

1.2.6 Spring Cloud与网关中间件8

1.2.7 Spring Cloud与全链路监控

中间件9

1.3 Spring Cloud增强生态10

1.3.1 Spring Cloud分布式事务10

1.3.2 Spring Cloud与领域驱动10

1.3.3 Spring Cloud与gRPC11

1.3.4 Spring Cloud与Dubbo生态融合11

1.4 本章小结11

第2章 Spring CloudEureka上篇12

2.1 服务发现概述12

2.1.1 服务发现由来12

2.1.2 Eureka简介14

2.1.3 服务发现技术选型15

2.2 Spring Cloud Eureka入门案例16

2.3 Eureka Server的REST API简介20

2.3.1 REST API列表20

2.3.2 REST API实例20

2.4 本章小结26

第3章 Spring CloudEureka下篇27

3.1 Eureka的核心类27

3.1.1 InstanceInfo27

3.1.2 LeaseInfo28

3.1.3 ServiceInstance29

3.1.4 InstanceStatus29

3.2 服务的核心操作30

3.2.1 概述30

3.2.2 LeaseManager30

3.2.3 LookupService31

3.3 Eureka的设计理念31

3.3.1 概述31

3.3.2 AP优于CP32

3.3.3 Peer to Peer架构33

3.3.4 Zone及Region设计34

3.3.5 SELF PRESERVATION设计36

3.4 Eureka参数调优及监控36

3.4.1 核心参数36

3.4.2 参数调优39

3.4.3 指标监控40

3.5 Eureka实战41

3.5.1 Eureka Server在线扩容41

3.5.2 构建Multi Zone Eureka Server47

3.5.3 支持Remote Region52

3.5.4 开启HTTP Basic认证58

3.5.5 启用https61

3.5.6 Eureka Admin66

3.5.7 基于metadata路由实例67

3.6 Eureka故障演练69

3.6.1 Eureka Server全部不可用69

3.6.2 Eureka Server部分不可用71

3.6.3 Eureka高可用原理73

3.7 本章小结74

第4章 Spring CloudFeign的

使用扩展75

4.1 Feign概述75

4.1.1 什么是Feign75

4.1.2 Feign的入门案例76

4.1.3 Feign的工作原理78

4.2 Feign的基础功能79

4.2.1 FeignClient注解剖析79

4.2.2 Feign开启GZIP压缩79

4.2.3 Feign支持属性文件配置80

4.2.4 Feign Client开启日志81

4.2.5 Feign的超时设置82

4.3 Feign的实战运用83

4.3.1 Feign默认Client的替换83

4.3.2 Feign的Post和Get的多

参数传递86

4.3.3 Feign的文件上传90

4.3.4 解决Feign首次请求失败问题92

4.3.5 Feign返回图片流处理方式93

4.3.6 Feign调用传递Token93

4.4 venus-cloud-feign设计与使用94

4.4.1 venus-cloud-feign的设计94

4.4.2 venus-cloud-feign的使用96

4.5 本章小结98

第5章 Spring CloudRibbon

实战运用99

5.1 Spring Cloud Ribbon概述99

5.1.1 Ribbon与负载均衡99

5.1.2 入门案例100

5.2 Spring Cloud Ribbon实战105

5.2.1 Ribbon负载均衡策略与

自定义配置105

5.2.2 Ribbon超时与重试107

5.2.3 Ribbon的饥饿加载108

5.2.4 利用配置文件自定义Ribbon

客户端108

5.2.5 Ribbon脱离Eureka的使用108

5.3 Spring Cloud Ribbon进阶109

5.3.1 核心工作原理109

5.3.2 负载均衡策略源码导读113

5.4 本章小结114

第6章 Spring CloudHystrix

实战运用115

6.1 Spring Cloud Hystrix概述115

6.1.1 解决什么问题116

6.1.2 设计目标117

6.2 Spring Cloud Hystrix实战运用118

6.2.1 入门示例118

6.2.2 Feign中使用断路器120

6.2.3 Hystrix Dashboard121

6.2.4 Turbine聚合Hystrix124

6.2.5 Hystrix异常机制和处理126

6.2.6 Hystrix配置说明128

6.2.6 Hystrix线程调整和计算129

6.2.7 Hystrix请求缓存130

6.2.8 Hystrix Request Collapser134

6.2.9 Hystrix线程传递及并发策略137

6.2.10 Hystrix命令注解142

6.3 本章小结144

第7章 Spring CloudZuul基础篇145

7.1 Spring Cloud Zuul概述145

7.2 Spring Cloud Zuul入门案例146

7.3 Spring Cloud Zuul典型配置149

7.3.1 路由配置149

7.3.2 功能配置152

7.4 本章小结154

第8章 Spring CloudZuul中级篇155

8.1 Spring Cloud Zuul Filter链155

8.1.1 工作原理155

8.1.2 Zuul原生Filter158

8.1.3 多级业务处理160

8.1.4 使用Groovy编写Filter165

8.2 Spring Cloud Zuul权限集成168

8.2.1 应用权限概述168

8.2.2 Zuul OAuth2.0 JWT实战169

8.3 Spring Cloud Zuul限流176

8.3.1 限流算法176

8.3.2 限流实战177

8.4 Spring Cloud Zuul动态路由179

8.4.1 动态路由概述179

8.4.2 动态路由实现原理剖析180

8.4.3 基于DB的动态路由实战182

8.5 Spring Cloud Zuul灰度发布185

8.5.1 灰度发布概述185

8.5.2 灰度发布实战之一186

8.6 Spring Cloud Zuul文件上传189

8.6.1 文件上传实战189

8.6.2 文件上传乱码解决191

8.7 Spring Cloud Zuul实用小技巧192

8.7.1 饥饿加载192

8.7.2 请求体修改192

8.7.3 使用OkHttp替换HttpClient193

8.7.4 重试机制194

8.7.5 Header传递195

8.7.6 整合Swagger2调试源服务195

8.8 本章小结197

第9章 Spring CloudZuul高级篇198

9.1 Spring Cloud Zuul多层负载198

9.1.1 痛点场景198

9.1.2 解决方案198

9.2 Spring Cloud Zuul应用优化200

9.2.1 概述200

9.2.2 容器优化201

9.2.3 组件优化202

9.2.4 JVM参数优化203

9.2.5 内部优化204

9.3 Spring Cloud Zuul原理 核心

源码解析205

9.3.1 工作原理与生命周期205

9.3.2 Filter装载与Filter链实现208

9.3.3 核心路由实现210

9.4 本章小结213

第10章 Spring Cloud基础综合

案例214

10.1 基础框架214

10.1.1 搭建说明214

10.1.2 技术方案214

10.1.3 具体实现215

10.2 实战扩展217

10.2.1 公共包 (对象,拦截器,

工具类等)218

10.2.2 用户上下文对象传递218

10.2.3 Zuul的Fallback机制221

10.3 生产环境各组件参考配置222

10.3.1 Eureka推荐配置222

10.3.2 Ribbon推荐配置223

10.3.3 Hystrix推荐配置223

10.3.4 Zuul推荐配置223

10.4 本章小结224

第11章 Spring CloudConfig上篇225

11.1 Spring Cloud Config配置中心

概述225

11.1.1 什么是配置中心225

11.1.2 Spring Cloud Config227

11.1.3 Spring Cloud Config入门

案例228

11.2 刷新配置中心信息234

11.2.1 手动刷新操作234

11.2.2 结合Spring Cloud Bus

热刷新237

11.3 本章小结244

第12章 Spring CloudConfig下篇245

12.1 服务端git配置详解与实战245

12.1.1 Git多种配置详解概述245

12.1.2 Git中URI占位符245

12.1.3 模式匹配和多个存储库250

12.1.4 路径搜索占位符251

12.2 关系型数据库的配置中心的

实现251

12.2.1 Spring Cloud Config基于

MySQL的配置概述251

12.2.2 Spring Cloud Config与MySQL

结合案例252

12.3 非关系型数据库的配置中心的

实现255

12.3.1 Spring Cloud Config基于

MongoDB的配置概述255

12.3.2 Spring Cloud Config MongoDB

案例256

12.4 Spring Cloud Config使用技能259

本地参数的覆盖远程参数259

12.5 Spring Cloud Config功能扩展260

12.5.1 客户端自动刷新260

12.5.2 客户端回退功能264

12.5.3 客户端的安全认证机制JWT270

12.6 高可用部分285

12.6.1 客户端高可用285

12.6.2 服务端高可用293

12.7 Spring Cloud与Apollo配置使用300

12.7.1 Apollo简介300

12.7.2 Apollo具备功能300

12.7.3 Apollo总体架构模块300

12.7.4 客户端设计301

12.7.5 Apollo运行环境方式302

12.8 Spring Cloud与Apollo结合

使用实战303

12.8.1 Apollo环境的要求303

12.8.2 Apollo基础数据导入303

12.8.3 创建config-client-apollo307

12.8.4 创建gateway-zuul-apollo310

12.9 本章总结316

第13章 Spring CloudConsul上篇317

13.1 Consul简介317

13.1.1 什么是Consul317

13.1.2 Consul能做什么317

13.1.3 Consul的安装318

13.1.4 Consul启动318

13.1.5 Consul UI319

13.1.6 Consul实用接口319

13.2 Spring Cloud Consul简介319

13.2.1 Spring Cloud Consul是什么319

13.2.2 Spring Cloud Consul能做什么320

13.2.3 Spring Cloud Consul入门案例320

13.3 本章小节324

第14章 Spring CloudConsul下篇325

14.1 Spring Cloud Consul深入325

14.1.1 Spring Cloud Consul的模块

介绍325

14.1.2 Spring Cloud Consul Discovery325

14.1.3 Spring Cloud Consul Config332

14.2 Spring Cloud Consul功能重写335

14.2.1 重写ConsulDiscoveryClient335

14.2.2 重写ConsulServerList338

14.3 常见问题排查343

14.3.1 版本兼容的那些坑343

14.3.2 Spring Cloud Consul的一些

问题344

14.4 本章小节346

第15章 Spring Cloud认证和鉴权347

15.1 微服务安全与权限347

15.2 Spring Cloud认证与鉴权方案348

15.2.1 单体应用下的常用方案348

15.2.2 微服务下SSO单点登录方案348

15.2.3 分布式Session与网关结合

方案349

15.2.4 客户端Token与网关结合

方案349

15.2.5 浏览器Cookie与网关结合

方案350

15.2.6 网关与Token和服务间鉴权

结合350

15.3 Spring Cloud认证鉴权实战

案例351

15.3.1 创建Spring Cloud Gateway

及关联信息351

15.3.2 核心的公共工程core-service353

15.3.3 服务提供方工程provider-

service355

15.3.4 客户端工程client-service356

15.3.5 运行结果356

15.4 本章小结358

第16章Spring Cloud全链路监控359

16.1 全链路监控概述359

16.1.1 链路监控的原理来源359

16.1.2 Sleuth原理介绍360

16.1.3 Brave和Zipkin360

16.2 Sleuth基本用法362

16.2.1 Sleuth对Feign的支持365

16.2.2 Sleuth对RestTemplate的

支持366

16.2.3 Sleuth对多线程的支持367

16.3 Sleuth深入用法367

16.3.1 TraceFilter367

16.3.2 Baggage367

16.3.3 案例367

16.4 Spring Cloud与SkyWalking369

16.4.1 Skywalking概述369

16.4.2 SkyWalking提供主要功能370

16.4.3 SkyWalking主要特性370

16.4.4 SkyWalking整体架构370

16.5 Spring Cloud与Skywalking实战370

16.5.1 父工程创建371

16.5.2 创建eureka-server-skywalking

工程372

16.5.3 创建zuul-skywalking373

16.5.4 创建service-a375

16.5.5 创建service-b377

16.5.6 SkyWalking Collector基础环境

安装378

16.5.7 使用Agent启动服务和监控

查看382

16.5.8 总结385

16.6 Spring Cloud与Pinpoint386

16.6.1 Pinpoint概述386

16.6.2 Pinpoint架构模块386

16.6.3 Pinpoint的数据结构386

16.6.4 Pinpoint兼容性387

16.7 Spring Cloud与Pinpoint实战389

16.7.1 Pinpoint基础环境389

16.7.2 Collector和Web部署391

16.7.3 Agent启动应用392

16.7.4 UI浏览指标394

16.7.5 总结397

16.8 本章总结398

第17章Spring CloudGateway

上篇399

17.1 Spring Cloud Gateway概述399

17.1.1 什么是Spring Cloud Gateway399

17.1.2 Spring Cloud Gateway的核心

概念399

17.2 Spring Cloud Gateway的工作

原理400

17.3 Spring Cloud Gateway入门案例401

17.4 Spring Cloud Gateway的路由

断言404

17.4.1 After路由断言工厂404

17.4.2 Before路由断言工厂406

17.4.3 Between路由断言工厂406

17.4.4 Cookie路由断言工厂407

17.4.5 Header路由断言工厂408

17.4.6 Host路由断言工厂410

17.4.7 Method路由断言工厂411

17.4.8 Query路由断言工厂411

17.4.9 RemoteAddr路由断言工厂412

17.5 Spring Cloud Gateway的内置

Filter413

17.5.1 AddRequestHeader过滤器

工厂413

17.5.2 AddRequestParameter过滤器413

17.5.3 RewritePath过滤器414

17.5.4 AddResponseHeader过滤器415

17.5.5 StripPrefix过滤器416

17.5.6 Retry过滤器417

17.5.7 Hystrix过滤器418

17.6 本章小结420

第18章 Spring CloudGateway

下篇421

18.1 Gateway基于服务发现的路由

规则421

18.1.1 Gateway的服务发现路由概述421

18.1.2 服务发现的路由规则案例422

18.2 Gateway Filter和Global Filter425

18.2.1 Gateway Filter和Global Filter

概述425

18.2.2 自定义Gateway Filter案例425

18.2.3 自定义Global Filter案例427

18.3 Spring Cloud Gateway实战428

18.3.1 Spring Cloud Gateway权重

路由428

18.3.2 Spring Cloud Gateway中Https

的使用技巧431

18.3.3 Spring Cloud Gateway集成

Swagger436

18.3.4 Spring Cloud Gateway限流442

18.3.5 Spring Cloud Gateway的动态

路由450

18.4 Spring Cloud Gateway源码篇458

18.4.1 Spring Cloud Gateway的处理

流程458

18.4.2 Gateway中ServerWebExchange

构建分析459

18.4.3 DispatcherHandler源码分析460

18.4.4 RoutePredicateHandlerMapping

源码分析461

18.4.5 FilteringWebHandler源码分析462

18.4.6 执行Filter源码分析463

18.5 本章小结465

第19章 Spring Cloud与gRPC

上篇466

19.1 Spring Cloud为什么需要gRPC466

19.2 gRPC简介468

19.3 gRPC的一些核心概念469

19.3.1 服务定义469

19.3.2 使用API470

19.3.2 同步vs异步470

19.4 RPC的生命周期470

19.5 gRPC依赖于Protocol Buffers472

19.5.1 Protocol Buffers的特点472

19.5.2 使用Protocol Buffers的Maven

插件472

19.5.3 Proto Buffer语法介绍475

19.6 gRPC基于HTTP2476

19.6.1 HTTP2的一些概念和特性476

19.7 gRPC基于Netty进行IO处理477

19.8 gRPC案例实战478

19.8 本章小结481

第20章gRPC在Spring Cloud

与gRPC下篇482

20.1 gRPC Spring Boot Starter介绍482

20.2 gRPC Spring Boot Starter架构

设计482

20.3 gRPC Spring Boot Starter源码

分析 483

20.3.1 gRPC Server Spring Boot Starter

源码解析483

20.3.2 gRPC Client Spring Boot Starter

源码解析486

20.4 案例实战489

20.4.1 注册中心489

20.4.2 链路追踪服务端490

20.4.3 gRPC的lib工程490

20.4.4 gRPC服务端491

20.4.5 gRPC客户端494

20.5 本章小结497

第21章 Spring Cloud版本控制与

灰度发布498

21.1 背景498

21.2 常见发布方式499

21.2.1 蓝绿发布499

21.2.2 滚动发布500

21.2.3 灰度发布500

21.2.4 对比501

21.3 版本控制与灰度发布实战502

21.3.1 Discovery项目503

21.3.2 实战案例504

21.3.3 实战测试505

21.4 本章小结509

第22章 Spring Cloud容器化510

22.1 Java服务Docker化510

22.1.1 基础镜像选择510

22.1.2 Dockerfile编写511

22.1.3 镜像构建插件514

22.1.4 JDK8 的Docker支持516

22.1.5 JDK9 镜像优化517

22.2 Spring Cloud组件的Docker化519

22.2.1 Docker化配置519

22.2.1 config-server的Docker化520

22.2.2 eureka-server的Docker化522

22.2.3 gateway的Docker化524

22.2.4 turbine的Docker化526

22.2.5 Spring Admin的Docker化528

22.2.6 biz-service的Docker化530

22.2.7 网卡选择532

22.2.8 小结 532

22.3 使用Kubernetes管理532

22.3.1 概述532

22.3.2 本地安装Kubernetes533

22.3.3 部署到Kubernetes536

22.3.4 一键伸缩544

22.3.5 滚动升级547

22.4 本章小结552

第23章 Dubbo向Spring Cloud

迁移553

23.1 将Dubbo服务纳入Spring Cloud

体系中553

23.1.1 将Dubbo项目改造成Spring

Boot项目553

23.1.2 集成Spring Cloud组件554

23.1.3 将Dubbo服务暴露为

RESTful API555

23.2 将Spring Cloud服务Dubbo化556

23.2.1 服务注册中心556

23.2.2 服务提供者556

23.2.3 服务消费者558

23.2.4 Spring Cloud Dubbo框架原理561

23.3 本章小结562

第24章 Spring Cloud与分布式事务563

24.1 概述563

24.1.1 ACID563

24.1.2 X/Open DTP模型与XA接口564

24.1.3 CAP与BASE定理567

24.2 解决方案567

24.2.1 Java事务编程接口JTA567

24.2.2 分布式事务TCC模式568

24.2.3 分布式事务SAGAS模式570

24.3 实战572

24.3.1 Atomikos JTA572

24.3.2 TCC for REST580

24.3.3 Servicecomb SAGA594

24.4 本章小结603

第25章 Spring Cloud与领域驱动

实践604

25.1 领域驱动概述604

25.1.1 Spring Cloud与领域驱动604

25.1.2 为什么需要领域建模605

25.2 领域驱动核心概念606

25.2.1 实体概述606

25.2.2 值对象概述606

25.2.3 领域服务607

25.2.4 聚合及聚合根607

25.2.5 边界上下文608

25.2.6 工厂609

25.2.7 仓储/资源库609

25.2.8 CQRS架构610

25.2.9 领域事件610

25.2.10 领域驱动模型的设计步骤611

25.3 Halo框架的设计611

25.3.1 DDD应用框架的意义611

25.3.2 领域驱动框架现状612

25.3.3 Halo框架概述612

25.3.4 Halo框架分层设计613

25.3.5 Halo框架中的CQRS设计615

25.3.6 Command与Command Bus

设计616

25.3.7 Event与Event Bus设计619

25.3.8 Extend扩展点设计621

25.3.9 业务身份设计623

25.3.10 规范设计624

25.4.1 事件风暴寻找模型和聚合625

25.4.2 Spring Cloud与Halo实战案例626

25.4.3 新建二方包工程模块627

25.4.4 新建DDD基础设施层629

25.4.5 新建DDD领域层 630

25.4.6 新建DDD应用层 632

25.4.7 启动测试634

25.5 本章小结634

为您推荐

《谢米尔的小潜水艇》内容简介|作者

内容简介 好的幻想小说都是成长小说,它长久不衰的魅力,在于它能帮孩子处理成长过程中必须面对的内心冲突。它是一面镜子,能照出孩子的自我;是孩子们演练内心冲突的一个舞台;是一次孩子们的自我发现之旅。 日本大幻想文学..

《高考英语高分作文字帖》内容简介|作者

内容简介书籍特色 这是一套对英文字母、单词、短语、句子、文章书法练习的字帖,根据习字者的书法水平和英语程度,由浅入深,由易到难,通过循序渐进的练习,帮助习字者快速提高书..

《魏晋唐小楷-中国历代名碑名帖精选》内容简介|作者

内容简介书籍特色 为传承和发扬传统文化,江西美术出版社北京分社推出《中国历代名碑名帖精选》系列图书,让我们从这里抵达华夏文明的深处。  书法艺术是中华文化瑰宝,古人..

《王福庵印谱-全3册》内容简介|作者

《硬笔楷书入门字帖》内容简介|作者

内容简介书籍特色 广大学生和书法爱好者书写汉字,力求规范、端正、整洁,能用钢笔熟练地书写正楷字,逐步提高书写速度,规范书写习惯。随着国家对传统文化越来越重视,写一手好的..

《李文采临王羲之圣教序碑》内容简介|作者

内容简介本书由僧人怀仁集王羲之书而成。怀仁从唐内府所藏王羲之书迹及民间王字遗墨中集《圣教序》, 历时二十四年。前人评价此碑: “天衣无缝, 胜于自运”, “逸少真迹, 咸萃其中”。由于王羲之真迹不存, 此碑是后人..

《李文采临李邕李思训碑》内容简介|作者

内容简介本书精选历代著名碑帖 (自殷商至近代) 影印出版, 纵贯中国书法史, 更加精当合理, 底本注重艺术性与版本价值相结合, 是广大读者学习书法艺术的首选法帖。碑高一丈一尺三寸六分, 宽四尺八寸五分。字共三十行,..