Spring Cloud Feign使用详解

Spring Cloud Feign使用详解,第1张

 通过前面两章对Spring Cloud Ribbon和Spring Cloud Hystrix的介绍,我们已经掌握了开发微服务应用时,两个重要武器,学会了如何在微服务架构中实现客户端负载均衡的服务调用以及如何通过断路器来保护我们的微服务应用。这两者将被作为基础工具类框架广泛地应用在各个微服务的实现中,不仅包括我们自身的业务类微服务,也包括一些基础设施类微服务(比如网关)。此外,在实践过程中,我们会发现对这两个框架的使用几乎是同时出现的。既然如此,那么是否有更高层次的封装来整合这两个基础工具以简化开发呢?本章我们即将介绍的Spring Cloud Ribbon与Spring Cloud Hystrix,除了提供这两者的强大功能之外,它还提供了一种声明式的Web服务客户端定义方式。

 我们在使用Spring Cloud Ribbon时,通常都会利用它对RestTemplate的请求拦截来实现对依赖服务的接口调用,而RestTemplate已经实现了对HTTP请求的封装处理,形成了一套模版化的调用方法。在之前的例子中,我们只是简单介绍了RestTemplate调用对实现,但是在实际开发中,由于对服务依赖对调用可能不止于一处,往往一个接口会被多处调用,所以我们通常都会针对各个微服务自行封装一些客户端累来包装这些依赖服务的调用。这个时候我们会发现,由于RestTemplate的封装,几乎每一个调用都是简单的模版化内容。综合上述这些情况,Spring Cloud Fegin在此基础上做了进一步封装,由它来帮助我们定义和实现依赖服务接口的定义。在Spring Cloud Feign的实现下,我们只需创建一个接口并用注解的方式来配置它,即可完成对服务提供方的接口绑定,简化了在使用Spring Cloud Ribbon时自行封装服务调用客户端的开发量。Spring Cloud Feign具备可插拔的注解支持,包括Feign注解和JAX-RS注解。同时,为了适应Spring的广大用户,它在Netflix Feign的基础上扩展了对Spring MVC的注解支持。这对于习惯于Spring MVC的开发者来说,无疑是一个好消息,你我这样可以大大减少学习适应它的成本。另外,对于Feign自身的一些主要组件,比如编码器和解码器等,它也以可插拔的方式提供,在有需求等时候我们以方便扩张和替换它们。

 在本节中,我们将通过一个简单示例来展示Spring Cloud Feign在服务客户端定义所带来的便利。下面等示例将继续使用之前我们实现等hello-service服务,这里我们会通过Spring Cloud Feign提供的声明式服务绑定功能来实现对该服务接口的调用。

▪️首先,创建一个Spring Boot基础工程,取名为kyle-service-feign,并在pomxml中引入spring-cloud-starter-eureka和spring-cloud-starter-feign依赖,具体内容如下所示。

▪️创建应用主类Application,并通过@EnableFeignClients注解开启Spring Cloud Feign的支持功能。

▪️定义HelloServiceFeign,接口@FeignClient注解指定服务名来绑定服务,然后再使用Spring MVC的注解来绑定具体该服务提供的REST接口。

▪️接着,创建一个RestClientController来实现对Feign客户端的调用。使用@Autowired直接注入上面定义的HelloServiceFeign实例,并在postPerson函数中调用这个绑定了hello-service服务接口的客户端来向该服务发起/hello接口的调用。

▪️最后,同Ribbon实现的服务消费者一样,需要在applicationproperties中指定服务注册中心,并定义自身的服务名为feign-service-provider,为了方便本地调试与之前的Ribbon消费者区分,端口使用8868。

 发送几次GET请求到 http://localhost:8868/client/getHostname=kyle ,可以得到如之前Ribbon实现时一样到效果,正确返回 hi, kyle! i from 1016637142:8877 。依然是利用Ribbon维护了针对HELLO-SERVICE-PROVIDER的服务列表信息,并且通过轮询实现了客户端负载均衡。而与Ribbon不同到是,通过Feign只需定义服务绑定接口,以声明式的方法,优雅而简单地实现了服务调用。

 现实系统中的各种业务接口要比上一节复杂得多,我们会再HTTP的各个位置传入各种不同类型的参数,并且再返回响应的时候也可能是一个复杂的对象结构。再本节中,我们将详细介绍Feign中的不同形式参数的绑定方法。

 再开始介绍Spring Cloud Feign的参数绑定之前,我们先扩张以下服务提供者hello-service-provider。增加下面这些接口,其中包含带有Request参数的请求、带有Header信息的请求、带有RequestBody的请求以及请求响应体中是一个对象的请求。

 在完成了对hello-service-provider的改造之后,下面我们开始在快速入门示例的kyle-service-feign应用中实现这些新增的绑定。

 这里一定要注意,再定义各参数绑定时,@RequestParam、@RequestHeader等可以指定参数名称的主角,它们的value千万不能少。在Spring MVC程序中,这些注解会根据参数名来作为默认值,但是在Feign中绑定参数必须通过value属性来指明具体的参数名,不然会抛出==IllegalStateException==异常,value属性不能为空。

 在完成上述改造之后,启动服务注册中心、两个hello-service-privider服务以及我们改造的kyle-service-feign。通过发送GET请求到== http://localhost:8868/feign/head/getHostname=kyle&age=18== ,通过发送POST请求到== http://localhost:8868/feign/project/postPerson== ,请求触发HelloServiceFeign对新增接口的调用。最终,我们会获得如下图的结果,代表接口绑定和调试成功。

 由于Spring Cloud Feign的客户端负载均衡是通过Spring Cloud Ribbon实现的,所以我们可以直接配置Ribbon客户端的方式来自定义各个服务客户端调用参数。那么我们如何使用Spring Cloud Feign的工程中使用Ribbon的配置呢?

 全局配置的方法非常简单,我们可以直接使用ribbon<key>=<value>的方式来设置ribbon的各项默认参数。如下:

 大多数情况下,我们对于服务调用的超时时间可能会根据实际服务的特性做一些调整,所以仅仅进行个性化配置的方式与使用Spring Cloud Ribbon时的配置方式是意义的,都采用<client>ribbonkey=value的格式进行设置。但是,这里就有一个疑问了,<cleint>所指代的Ribbon客户端在那里呢?

 回想一下,在定义Feign客户端的时候,我们使用了@FeignClient注解。在初始化过程中,Spring Cloud Feign会根据该注解的name属性或value属性指定的服务名,自动创建一个同名的Ribbon客户端。如下:

 Spring Cloud Ribbon默认负载均衡策略是轮询策略,不过该不一定满足我们的需要。Ribbon一共提供了7种负载均衡策略,如果我们需要ZoneAvoidanceRule,首先要在applicationproperties文件中添加配置,如下所示:

 不过,只是添加了如上配置,还无法实现负载均衡策略的更改。我们还需要实例化该策略,可以在应用主类中直接加入IRule实例的创建,如下:

 想要深入了解Ribbon的原理,或者想详细了解7种负载均衡策略的,可以参考我另一篇博客 《Ribbon详解》 ,我会在博客最下面给出链接。

 从前两节来看在Spring Boot工程中使用Feign,非常的便利。不过实际生产中,在微服务的初期只能从次要系统开始进行改造,可能很多系统由于历史原因仍然是非Spring Boot的工程,然后这些系统如何使用微服务?如何使用注册中心?如何进行负载均衡呢?

 ▪️首先我们在kyle-service-feign创建调用接口OldSystemPostFeign和OldSystemGetFeign,然后使用feign注解提供的相关注解,包含@RequestLine、@Param、@HeaderParam、@Headers等,主要提供了请求方法、请求参数、头信息参数等操作。

 ▪️我们需要脱离Spring Boot和Spring Cloud的支持,使用feign原生的一些东西。在进行Feign封装之前我们需要一些额外的组件,比如编码器。新增组件依赖如下所示:

 ▪️我们需要一个feign-clientproperties文件,来进行ribbon相关的参数配置,配置如下:

 ▪️到目前为止,相关要素已经准备好了,接下来需要feign和ribbon的封装了。我们需要创建OldSystemFeignClientConfiguration类,作用是加载feign-clientproperties文件,并创建一个附带负载均衡器的RibbonClient,然后封装出一个附带Jackson编解码器的FeignClient,如下所示:

 ▪️然后我需要一个测试类FeignClientTest,测试以上3个接口,然后将结果输出到控台如下所示:

 ▪️在完成上述改造之后,启动测试类FeignClientTest,获得如下的结果,说明调用使用了负载均衡。

 细心的同学会发现,非Spring Boot使用feign调用根本没有使用到注册中心的服务发现。在此我提供一个思路,我们可以调用代理微服务,再由代理进行服务发现。那么这个代理服务应该具备哪些功能和作用呢?我将会在下一篇博客详细讲述Netflix公司的API网关组件zuul,它承担路由转发,拦截过滤,流量控制等功能。

▪️ 第一次请求失败

 原因:由于spring的懒加载机制导致大量的类只有在真正使用的才会真正创建,由于默认的熔断超时时间(1秒)过短,导致第一次请求很容易失败,特别互相依赖复杂的时候。

 解决方法:提升熔断超时时间和ribbon超时时间,配置如下:

▪️ Feign的Http Client

 Feign在默认情况下使用的是JDK原生URLConnection发送HTTP请求,没有连接池,但是对每个地址会保持一个长连接,即利用HTTP的persistence connection。我们可以用Apache的HTTP Client替换Feign原始的http client,从而获取连接池、超时时间等与性能息息相关的控制能力。Spring Cloud从BrixtionSR5版本开始支持这种替换,首先在项目中声明Apcahe HTTP Client和feign-httpclient依赖,然后在applicationproperties中添加:

▪️ 如何实现在feign请求之前进行操作

 feign组件提供了请求操作接口RequestInterceptor,实现之后对apply函数进行重写就能对request进行修改,包括header和body操作。

▪️ 请求压缩

 Spring Cloud Feign支持对请求和响应进行GZIP压缩,以减少通信过程中的性能损耗。我们只需通过下面两个参数设置,就能开启请求与响应的压缩功能:

 同时,我们还能对请求压缩做一些更细致的设置,比如下面的配置内容指定了压缩的请求数据类型,并设置了压缩的大小下限,只有超过这个大小的请求才会对其进行压缩。

 上述配置的feigncompressionrequestnime-types和feigncompressionrequestmin-request-size均为默认值。

▪️ 日志配置

 Spring Cloud Feign在构建被@FeignClient注解修饰的服务客户端时,会为每一个客户端都创建一个feign的请求细节。可以在 applicationproperties 文件中使用logginglevel<FeignClient>的参数配置格式来开启指定Feign客户端的DEBUG日志,其中<FeignClient>为Feign客户端定义捷克队完整路径,比如针对本博文中我们实现的HelloServiceFeign可以如下配置开启:

 但是,只是添加了如上配置,还无法实现对DEBUG日志的输出。这时由于Feign客户端默认对LoggerLevel对象定义为NONE级别,该界别不会记录任何Feign调用过程中对信息,所以我们需要调整它对级别,针对全局对日志级别,可以在应用主类中直接假如LoggerLevel的Bean创建,具体如下:

 在调整日志级别为FULL之后,我们可以再访问第一节的 http://localhost:8868/feign/postPersonname=kyle 接口,这是我们在kyle-service-feign的控制台中可以看到类似下面的请求详细的日志:

 对于Feign的Logger级别主要有下面4类,可根据实际需要进行调整使用。

▪️ 负载均衡异常

 当我们只是对一个微服务进行调用的时候,Ribbon提供的支持好像没什么问题。不过在我们进行多个微服务调用时会产生异常,这也是大多数人忽略的。

情景描述 :2个应用B和C,在A中使用feign client调用B和C;测试结果,假如先调用B,再调用C都是有效的,但是再调用B就是无效的;(B,C先后顺序改变,都会产生这个bug)

解决方法 :在主启动类使用注解@RibbonClient,进行RibbonClient配置,如下所示:

 看不懂是吗?不要紧,我下面详细讲解一下,先看一下我们之前的非Spring Boot工程中封装FeignClient:

 OldSystemPostFeign只是一个接口,Feign为什么需要使用接口来调用远程接口?原因就是使用JDK动态代理,我们可以去看Feign是如何进行处理。

The Walk《云中行走》是由美国三星影业出品的传记剧情片,中国**集团公司进口,中国**股份有限公司、华夏**发行有限责任公司联合发行,由罗伯特·泽米吉斯执导,约瑟夫·高登-莱维特、夏洛特·莱本、本·金斯利领衔主演 。

影片根据菲利普·帕特的个人自传改编。讲述了1974年杂技人菲利普·帕特,在纽约世贸大楼双子塔之间搭建钢索,成功穿越两座大楼的经历的故事 。从小就喜爱表演的菲利普·帕特(约瑟夫·高登-莱维特饰)长大后成为法国杂技名人,他来到纽约,想要在摩天大厦之间走钢索的梦想,在遭遇了一系列的怀疑、误解、受伤之后,在精神导师帕帕·鲁迪(本·金斯利饰)的协助下,依然坚定地站在了世贸大楼之间的钢索之上。众目睽睽下,垫钢索的木块突然粉碎,在众人的惊呼声中,400多米高空之上的他,是否可以完成自己的梦想 影片于2015年,10月9日在美国上映。

Money Monster《金钱怪兽》是由美国威秀影片公司出品的犯罪剧情片,由朱迪·福斯特执导,乔治·克鲁尼、朱莉娅·罗伯茨、杰克·奥康奈尔领衔主演 。

该片讲述了财经节目主持人在电视直播中被一位观众绑架的故事。影片于2016年5月13日在美国上映 一家大公司的CEO 沃尔特·坎比(多米尼克·威斯特饰)对外称公司一夜之间蒸发的8亿美元股票是由于电脑故障,当然这背后另有隐情。在众多蒙受损失的投资人当中,有一个24岁的卡车司机科尔(杰克·奥康奈尔饰)。他和怀孕的女友就是看了李·盖茨(乔治·克鲁尼饰)的节目,并且听信了他对于这只股票的分析,把全部家产都投了上去。如今一夜之间倾家荡产,Kyle一怒之下扛枪闯进直播间,绑架了李·盖茨,给他绑上了炸弹。这一幕就通过电视信号直播出去了。此时在控制室的导播正是帕蒂·芬恩(朱莉娅·罗伯茨饰),她要怎样处理这个危局

Julie & Julia《朱莉与朱莉娅》是由诺拉·艾芙隆执导的剧情片,梅丽尔·斯特里普、艾米·亚当斯领衔主演。《朱莉与朱莉娅》根据朱莉·鲍威尔著《美味关系:朱莉与朱莉娅》与朱莉亚·查尔德著《我的法兰西岁月》改编而成。

**讲述了曾在法国生活过的美国人朱莉·查尔德写了一本美食书,而隔代的美国女孩朱莉娅·鲍威尔根据她的书来逐一实践,并发表在博客上,结果开始拥有大批粉丝,也因此懂得人生意义的故事。

影片讲述两个女人平凡的生活因为诱人的法式美食而变得彻底不同。在朱莉娅·查尔德(梅丽尔·斯特里普饰)改变世界之前,她只是一个平凡的生活在法国的美国女人,她最大的爱好就是“吃”。“为什么我不能去专业的美食学校去学习做菜?”于是,在一群法国男人霸占下的厨房中,朱莉娅这个外乡人开始尝试制作传统法国大餐。最终她获得了成功,并将自己的经验分享成一本厚厚的《掌握烹饪法国菜的艺术》。

生活在美国的朱莉·鲍威尔(艾米·亚当斯饰)同样是个失意者,身为政府雇员的她工作沉闷无聊。但当她看到朱莉娅·查尔德的《掌握烹饪法国菜的艺术》时,一切都改变了。她学做书中的每道菜,并且将其体验写成博客放在网上,结果赢得了一大批粉丝的关注。

Eat Pray Love《美食祈祷和恋爱》是由瑞恩·墨菲执导,朱莉娅·罗伯茨、哈维尔·巴登、詹姆斯·弗兰科、维奥拉·戴维斯等主演的一部爱情片。该片于2010年08月13日在美国上映。

该片改编自伊丽莎白·吉尔伯特的同名自传小说《一辈子做女孩》,讲述了伊丽莎白·吉尔伯特在感情受伤之后,踏上了全新的发现之旅,在感受不同国度的美好事物过程中重新唤起内心的生活希望与真实的自我的故事。**刚开始没多久,女主人公伊丽莎白·吉尔伯特离了婚,打算出门旅行,既为转移注意力,也为与自己独处、找回自我。她就此走向广阔天地,意大利、巴厘岛、印度,一站站走下去,在每个地方短暂生活,最终用掉了一年时间。意大利的重点,是美食,她“和比萨谈恋爱”,她凝视一盘意大利面许久,突然身心激荡似的,开始卷动面条,大口吞咽。印度的重点,是学习身心平衡术,她习练瑜伽,她出现在当地人的婚礼上,穿着纱丽,眉心点着一点璀璨的红;巴厘岛的重点,却是欲望,俊俏的男子笑着说,来巴厘岛,没有艳遇,岂不可惜,费利佩在她面前脱个精光,奔向河水,她讶然,大笑跑开。最终伊丽莎白·吉尔伯特在巴厘岛意外的找到了内心的平静以及真爱的平衡之道。

Memento《记忆碎片》是根据乔纳森·诺兰的短篇小说《Memento Mori》改编而成的悬念影片,影片由克里斯托弗·诺兰导演,盖·皮尔斯、凯莉·安妮·莫斯、乔·潘托里亚诺、小马克·布恩等人主演。

影片讲述了患有“短期记忆丧失症”的莱昂纳多·谢尔比必须根据自己支离破碎的记忆来找到杀害自己妻子的凶手的故事。

莱昂纳多·谢尔比(盖·皮尔斯饰)的生活只有一个目标,那就是向杀害他妻子的凶手复仇。

原来在若干时日以前,正值新婚的谢尔比夫妇遭到了一名歹徒的袭击,凶犯残忍地杀害了莱昂纳多的妻子,莱昂纳多自己虽然从死亡线上挣扎了回来,却因为脑部的严重损伤而得了一种奇怪的“短期记忆丧失症”,从此他只能记住十分钟前发生的事情。尽管在警方看来,这是一起每天都会发生的普通抢劫案件,但是莱尼的生活却被彻底改变了。不满于警方草草结案,莱尼发誓要追查到凶手,替惨死的爱妻报仇。可是,支离破碎的记忆却令莱昂纳多举步维艰,他只能凭借一些零碎的小东西诸如纹身、宝丽来快照等才能回忆起过去的点点滴滴,而且,每当他找到一些有价值的线索时,他必须要使用一切方法立即将之记录下来,因为很可能十几分钟后,他就根本无法记得自己在什么地方、来做什么。

调查艰难地进行着,莱昂纳多遇上一个粗俗的酒吧女招待娜塔莉娅(凯瑞·安妮·莫斯),她似乎知道一些莱昂纳多感兴趣的事,还有一个自称是他以前好朋友的叫泰迪(乔·潘托利亚诺)的家伙,但是他看上去鬼鬼祟祟的,好像不怀好意,到底谁才可以信任,娜塔莉娅?泰迪?还是他自己?那些不断显现出的记忆到底会把自己引向哪里?莱昂纳多陷入了困惑中。

Side Effects 副作用主演: 裘德·洛 / 鲁妮·玛拉 / 查宁·塔图姆 / 凯瑟琳·泽塔-琼斯 / 凡妮莎·肖 / 马琳·爱尔兰 / 波利·德雷珀 / 哈拉尔多 ·阿尔瓦雷斯 / 詹姆斯·马丁内斯 / 大卫·科斯塔贝尔 / 麦米·古默

四年前,丈夫Martin(查宁·塔图姆 Channing Tatum 饰)的入狱让Emily(鲁妮·玛拉 Rooney Mara 饰)陷入了忧郁之中。如今Martin出狱了,Emily的忧郁并没有减少,反而企图在停车场开车自杀。自杀未遂后,医生Jon(裘德·洛 Jude Law 饰)开始对她进行治疗。Jon了解到Emily以前的医生是Siebert,便找Siebert了解了一些情况。Jon给Emily开了几种治忧郁症的药,似乎都没作用。Emily提出让她服用一种叫Ablixa的药,是她的同事Julia向她推荐的。服用了这种新药之后,Emily病情有所好转,却开始梦游。Jon告诉她,梦游是服用这种药的副作用。一天晚上,Martin回到家中,发现Emily在厨房梦游,Emily更拿着刀刺中了Martin。Martin死亡,法院判处Emily无罪,但她必须在一个精神病院接受治疗。Jon因为此事也陷入漩涡之中,他开始调查起整个杀人事件的前因后果,发现此事并非只是Emily服用了药产生副作用那么简单,还有更多人牵涉其中 上映日期: 2013-02-08(美国)

The Notebook《恋恋笔记本》是导演尼克·卡萨维茨2004年的一部爱情片。改编于美国小说家尼古拉斯·斯帕克斯的同名小说,由莱恩·高斯利、瑞秋·麦克亚当斯等联袂出演。影片于2004年6月25日在美国上映。

该片讲述一对青梅竹马在二次世界大战后历劫重逢,这段刻骨铭心的故事由一名天天来探望住在疗养院病人的老先生笔记本中娓娓道出,随着故事水落石出,显然这名躺在病床上的老太太就是故事中的女主角,而说故事者正是求婚的人

那是40年代初期,艾丽·哈米顿(瑞秋·麦克亚当斯饰演)跟着她的家人,来到了南卡罗莱那州的海边小城水溪镇,他们计划在这里能够度过一个凉爽的暑假。那时艾丽还是个十几岁的青春少女,在一次狂欢派对上,她结识了当地男孩诺亚·卡豪(瑞恩·高斯林饰)。在晚会上见面之后,他们立刻被对方深深吸引住了,一段美丽的初恋悄悄的在海边小镇发生了。

虽然艾丽是个富有人家的千金,而诺亚只是个当地工厂的穷工人,但当他们一起度过了这个充满激情和快乐的夏天后,两个人已经走进深深的爱河了。眼看着这对小情人就要成为夫妻,继续享受爱情的幸福和甜蜜,可是突然爆发的第二次世界大战把他们分开了,联系在一起的只有他们彼此爱着对方的心。

  当战争结束,诺奇几年后从战场上回来后,艾丽已经不在那里了,她从他的生命中离开了,但在诺亚的心里依然想念着艾丽。诺亚不知道,其实艾丽在那个甜蜜暑假之后,她又回到了水溪镇——那个他们一见钟情相爱的地方——找他,只是那时他已经参军踏上战场离开了家乡。找不着诺亚的艾丽抱着遗憾和一丝希望留在了水溪镇,并和一个富有的军人哈蒙德结了婚,他们是在步兵医院里认识的。

  几十年之后,有个老头(詹姆斯·加纳饰)向一个老女人(吉娜·罗兰兹饰)读着一本褪色的笔记本,他一直住在她疗养院的家里。虽然她的记忆已经模糊,但她的心里依然记得两人之间曾经的恋恋激情。其实这个垂垂老去的女人就是当年艾丽,而向他讲述那本笔记本里的故事的老头,正是为她守侯了一生的诺亚

Atonement《赎罪》是由美国环球影业于2007年9月7日出品,乔·怀特执导,詹姆斯·麦卡沃伊、凯拉·奈特莉主演的影片。

该片改编自获得过普利策文学奖的同名小说,讲述了二战期间一对身份迥异的恋人因被13岁少女的一个误会,在战火中阴差阳错造成悲剧的唯美爱情故事。1935年夏天,来自一个宽裕的英国小康家庭的13岁的少女布里奥妮·泰利斯(西尔莎·罗南饰)刚刚开始尝试写作,想象力丰富。一天,她暗中发现仆人的儿子罗比·特纳(詹姆斯·麦卡沃伊饰)和她的姐姐塞西莉亚·泰利斯(凯拉·奈特利饰)之间有暧昧关系,而且发现他给她写了一封充满情色意味的情书。

布里奥妮丰富的想象力虚构着各种可怕的事情,浮想联翩。当她的表姐被强奸后,布里奥妮相当肯定她看到是罗比做的,这次指证使罗比蒙冤入狱,留下伤心欲绝的塞西莉亚。

  第二次世界大战爆发了,出狱后的罗比和塞西莉亚都投入了保卫祖国的战斗,布里奥妮放弃到剑桥升学成为一名军队医务人员。没有人能理解她的做法,只有她知道她怀揣着巨大的秘密和自责。她鼓起勇气,想把这秘密解开,能真正赎罪和得到宽恕。然而,世事幻变,出乎布里奥妮的预算。

The Time Traveler's Wife《时间旅行者的妻子》由罗伯特·史文克执导,艾瑞克·巴纳和瑞秋·麦克亚当斯等联袂出演,改编自奥黛丽·尼芬格创作的一本同名小说。影片于2009年8月14日在美国上映 。

**讲述一个战胜了时空阻碍的爱情故事。男主亨利自小患慢性时间错位症,每次发病都赤身裸体穿越时空,一个偶然的机会,他爱上了女主克莱尔,两人坠入爱河无法自拔,最后克服层层阻碍,共同迈进婚姻殿堂。

身为图书馆管理员的亨利(艾瑞克·巴纳饰),本来一直普普通通的干着这份工作,但自从他患上一个疑难杂症之后,他的生活就注定不再普通。而他身上这个治不好的病,称为“慢性时间错位症”。随时随地可能发病,而发病的临床症状就是——时空穿梭。

时空穿梭本来是一件令许多人觉得美妙的事情,可亨利肯定不会这么觉得,因为每次时空穿梭的发生时间不但无法受到亨利的控制,而且衣物都是无法跟着亨利一起穿梭的,所以每次时空穿梭完毕亨利都是赤身裸体,为此他也没少出糗事。经历了上百次时空穿梭之后,亨利已经渐渐习惯了这种非常规的生活,直到在一次穿梭的时候,他遇见了一位叫克莱尔(瑞秋·麦克亚当斯饰)的女孩。

爱上了克莱尔的亨利,穿梭到6岁时候的克莱尔处,告诉了她自己是克莱尔未来的丈夫,并且还在她面前表演了一次时空穿梭,此后十多年,克莱尔一直静候着亨利的出现。两人终于遇见了,迅速的进入热恋、结婚,还生了一个女儿,可是亨利依旧会随时随地消失,亨利始终不能控制自己的能力。在时间的缓缓流逝里,两个人经历了许许多多的磨难,作为一名时间旅行者的妻子,克莱尔必须用一种不同于常人的方式来继续自己的家庭生活

Message in a Bottle《瓶中信》由Luis Mandoki执导,凯文·科斯特纳、罗宾·怀特主演。讲述了离婚女子Theresa Osborne在海边散步时捡到一个玻璃瓶,结果踏上一段爱情旅程的故事。特丽莎(罗宾·怀特饰)离婚后,儿子是她的珍宝。她是一名专栏作家,为了给儿子好的生活,她工作勤劳。一天她在海边跑步的时候,捡到了一个玻璃瓶,里面竟有一封信。特丽莎深切的感受到了写信人心痛的感觉,阴差阳错之间这封信被刊登在了报纸上。读者反应热烈,为了乘胜追击,报社派出特丽莎寻找这封信的主人。

  写信的人名叫盖瑞(凯文·科斯特纳 饰),自从妻子凯瑟琳离世之后,他每天都活在悲伤的阴影中,用信表达自己对妻子的爱意。特丽莎还是见到了这名伤心的男子,也没有告诉盖瑞她看过他写的那些瓶中信

The Curious Case Of Benjamin Button《返老还童》是导演大卫·芬奇执导的一部剧情**,由布拉德·皮特、凯特·布兰切特、塔拉吉·P·汉森和蒂尔达·斯文顿等联袂出演。影片于2008年12月10日放映。

**讲述了本杰明·巴顿这个怪人,他违反了大自然的规律,竟以老人形象降生人世,之后越活越年轻倒着成长的奇怪生命轨迹。

1919年,全世界的人民刚刚从第一次世界大战的阴霾中走出之时,却在美国的巴尔的摩发生了一件怪事。一个叫本杰明·巴顿(布拉德·皮特饰)的奇异婴儿在降生之后,母亲难产而死,自己被亲生父亲遗弃在街边。因为,这个前所未有的怪胎竟然一出生就是一个古昔老人的模样。幸运的是,一位好心的黑人妇女收养了巴顿这个怪异的婴儿。并在随后的岁月里,带他一起生活教育他成长,尽管本杰明·巴顿老弱的身体和看似即将先于继母辞世的长相常常让他在“同龄”的同学们当中成为被嘲笑的话柄。但老继母的不离不弃,时刻给予着他继续生存下去的理由。终于,本杰明迎来了自己在人世上生存的第11个年头,此时的他看起来也似乎健康年轻一些,但依旧老态龙钟。但巴顿在学校里遇到了彻底改变他一生的第二个女人——当时还仅仅6岁的小姑娘黛茜(凯特·布兰切特饰)她的可爱和纯真彻底征服了“老男人”巴顿的心。而巴顿同样真诚、清澈的心也感动了小黛茜,两人之间的爱慕之心开始萌芽。

十几年后,第二次世界大战的战火更加猛烈地燃烧着整个世界。动乱局势中,本杰明·巴顿和许多美国人一样,乘坐船从美国来到英国为反法西斯战争做出贡献。这期间他遇见了各种各样的人物,遇到了英国贸易公使夫人伊丽莎白·阿伯特(蒂尔达·斯温顿饰),品尝到第一段人生爱情;参加了真正的战争,见识了战争的惨烈,目睹到了真正人生的悲剧,也体验到人性最伟大的光辉。

二战结束后,本杰明重返美国。此时的他已然摆脱了儿时老态的模样,渐渐成长为帅气且魅力十足的中年人。并且命中注定般地在纽约与儿时的梦中情人黛茜重逢。而此时黛茜也出落成一位风姿可人、事业成功的漂亮舞者了。两人经过成熟的交往之后,终于在年龄和外表都完全匹配的情况下一同度过了幸福美好的几年时光。但是,随着时间的继续,本杰明继续年轻,英俊。就在所有人都苦于岁月带给他们的衰老之时,本杰明·巴顿却犹如返老还童一般逆行而上。就像这个经历了两次世界大战洗礼过的世界一样,愈发地显现出青春活力。与此同时,巴顿与爱人们的关系也遭遇了种种难以逾越的障碍 。

廊桥遗梦 The Bridges of Madison County

 弗朗西斯卡(Meryl Streep 饰)的子女翻看母亲的旧信,揭开了母亲生前不为人知的一段动人感情。1965年的一天,弗朗西斯卡独自在家,最后一个牛仔——摄影记者罗伯特·金凯(Clint Eastwood 饰)把车停在她门口,向她打听曼迪逊桥的所在。她带他来到桥边,完 成工作 后他送她一把野菊花表示谢意。她的心中荡漾起难以言喻的滋味。她将一张纸条订在桥头,邀请他共进晚餐。欣然前来的他与她度过了美妙的一晚。此后2天二人整天厮守。

  但是弗朗西斯卡割舍不下孩子和世俗的幸福,罗伯特最终独自上路。几天后二人在超市门口有过短暂的一瞥,当时弗朗西斯卡强忍奔上前去的冲动,漫天的雨成了他们诀别的泪。

  1982年3月,她知道了罗伯特的死讯。在生命的最后旅程,她立下遗嘱:要子女们将自己的骨灰撒在曼迪逊桥畔,生前她把所有的时光都留给了家庭,但求死后能永远依偎在爱人的身边。

《湄公河行动》是博纳影业集团出品的警匪动作**,由林超贤编剧并执导,张涵予、彭于晏、冯文娟等主演。

该片根据“10·5中国船员金三角遇害事件”(湄公河惨案)改编,讲述了一支行动小组为解开中国商船船员遇难所隐藏的阴谋,企图揪出运毒案件幕后黑手的故事

2011年10月5日清晨,两艘中国商船在湄公河金三角流域遇袭,船上13名中国船员全部遇难,并在船上发现90万粒毒品。这宗枪杀十三名中国船员的血腥冤案,掀起了悲剧的序幕。面对矛头指向中国运毒、颠倒是非的舆论,为了还遇难同胞一个清白,中国决定派出缉毒精英,组成此次案件的特别行动小组,以高刚为队长,潜入金三角查明真相,竭力揪出案件的幕后黑手。然而缉拿真凶的过程并非他们想得那么简单,事件的进展扑朔迷离,通往真相的道路更是险象环生 影片于2016年9月30日在中国上映

《消失的爱人》(Gone Girl)是改编自吉莉安·弗琳的同名小说,由大卫·芬奇执导,本·阿弗莱克 、罗莎曼德·派克、尼尔·帕特里克·哈里斯等主演的悬疑惊悚**。

该片讲述了平凡又恩爱的一对夫妻,突然有一天妻子却消失不见,丈夫通过各种方式疯狂寻找,然而在妻子留下的一本日记中却发现,种种线索都表明是丈夫将妻子杀害。一对从纽约搬到密苏里的夫妇尼克和他的太太艾米,两个人表面上看是一对完美的恩爱夫妻,但在结婚5周年纪念日当天,这个美好的家庭却发生了变故。尼克回到家,发现大门没关,客厅里家具零乱,而他小有名气的美丽妻子却不见踪影。尼克通过媒体深情告白,疯狂寻找消失的爱人。一夜之间,他从人人称羡的幸运丈夫变成镁光灯下无处可躲的可怜男人。艾米每天都用日记来记录婚后生活,每个结婚纪念日都精心设计充满惊喜的“寻宝游戏”,以此维系和丈夫的亲密关系,但生活却不可阻挡地越来越平淡如水。也正是艾米的这本日记,透露出这个家庭有着许多美国家暴案的典型特征,字字直指尼克是真凶。尼克又曝光出一连串的谎言、骗局和不得体的行为,让他的处境雪上加霜。艾米则被吹捧成媒体新宠,大家都想知道她到底是活是死,饥渴的大众等着挖掘出事情的真相。但是,尼克真的是杀人犯吗?该片于2014年10月3日在美国上映。

《火车上的女孩》The Girl On the Train是由宝拉·霍金斯所著,塔特·泰勒导演,艾米莉·布朗特主演的悬疑**。影片于2016年10月24日在美国上映。“每一对夫妻,都试图做到忠诚不二,但最终,他们都以不同的方式败露无遗。”

  在这节车厢其余乘客眼中,她显得再普通不过:她的举动

跟别人并无二致——搭火车通勤、制订日程、处理各种琐事。

  火车即将进站——

  早上8:04—傍晚17:56

  日复一日

  瑞秋每天早晚在固定时间搭乘通勤火车上下班。

  她熟知火车会在同一盏信号灯前停留,让她得以透过车窗,窥见路旁15号住户的后院。

  她对这户人家的生活渐渐痴迷,甚至给男女主人分别取了名字:“杰丝”和“杰森”。

  在瑞秋的想象中,他们是一对情投意合的璧人,恩爱甜蜜的夫妻。

  她无比艳羡,又满怀妒意。

  直到有一天

  瑞秋从车窗里看到了15号住户异常的一幕。

  一分钟后,火车重新启动,但三个人的命运从此改变。

  过去她只能从车窗后窥视陌生人的生活,而此刻,她与他们,开始有了紧密的交集。

  瑞秋不再甘心只当一个搭火车经过的路人……

《熔炉》是根据孔枝泳同名小说改编的剧情**,影片由黄东赫执导,孔刘、郑有美、金贤秀、金志映等主演。

该影片以2000年至2004年间发生于光州一所聋哑障碍人学校中性暴力事件为蓝本,描述该时间所引发的悲剧以及学校的教师和人权运动者一起力图揭开背后黑幕的故事。2011年9月22日在韩国上映

来自首尔的哑语美术老师姜仁浩(孔刘饰)来到雾津,应聘于慈爱聋哑人学校。天降大雾,他意外撞车,维修时邂逅了人权组织成员友真(郑有美饰)。姜仁浩妻子早亡,8岁女儿松儿天生哮喘由祖母照看,所以他不辞辛苦谋职养家。然而,双胞胎的校长与教导主任竟逼仁浩索贿5千万韩元,并美其名为学校发展基金。同时,姜仁浩逐渐发现学校笼罩着一种紧张压抑的气氛,令人窒息。尤其有三个孩子引人关注:聪颖的金妍斗(金贤秀饰)和贪吃的陈宥利(郑仁絮 饰)总是躲闪。全民秀(白承焕 饰)的弟弟自杀身亡,他总是满脸淤青。下课后,仁浩还听到女厕所中有呼喊与哭泣,在门卫的阻拦下他未深究。之后,他意外目睹了校长行贿警察,教导员毒打民秀,宿舍督导溺罚妍斗的行径。一个惊天的隐秘被慢慢揭开,真相震动整个韩国

《萨利机长》Sully是由美国华纳兄弟影片公司出品的传记剧情片,由克林特·伊斯特伍德执导,汤姆·汉克斯领衔主演。该片于2016年12月9日在中国上映

影片根据2009年美利坚航空公司1549号航班机长切斯利·舒伦伯格的真实英雄事迹改编。讲述了萨利机长在发动机失效的情况下,成功迫降拯救155名乘客和机组人员的故事2009年1月15日,前美国空军飞行员切斯利·萨伦伯格(汤姆·汉克斯饰)执飞全美航空1549号航班,从纽约飞往北卡罗来纳州。这架空中客车A320-214飞机起飞爬升过程中遭加拿大黑雁撞击,导致两具引擎同时熄火,飞机完全失去动力。切斯利·萨伦伯格确认无法到达任何附近机场后,决定于哈德逊河河面进行迫降,最后155名乘客和机组人员全部生还,萨利机长成为最大的英雄

: )

官方对这个J&A的结局是这么解释的:Kyle和Jessi的关系肯定会进一步发展,他们的爱复杂,热烈而多变,但他们相爱的结果却是自毁,而随着Amanda步入大学,思想变得成熟后,K和A会对彼此有重新的认识,不再仅仅是单纯的早恋~ 不过最后2人都没有跟Kyle在一起,肩负着重大使命的Kyle注定不能拥有和平常人一样感情生活,因为英雄往往是孤独的,Kyle也不例外,他将独自一人上路,踏上奉献世界的道路

你可以自己看一下,每个角色的结局都有:http://communityabcfamilygocom/blogs/kyle-xy/writerco-producer-julie-plec-answers-questions-about-kyle-xy-finale

曲由于**《凡夫俗

》采用

配乐

广

**《我

野蛮

友》

采用

改编版—乔治·温斯顿(George

Winston)

音乐专辑《December》

《帕赫贝尔

卡农变奏曲》(Variations

on

the

Canon

by

Pachelbel)

更使

风靡

**《假

意》

采用

曲作

首插曲

代表

类文明

家航空航

局通

造卫星送入太空

画新世纪福音战士

剧场版

亦用

弦乐版作

配乐

画Kanon京都版

第14

使用

并用

曲解释标题

港片《十

情文艺片

高潮部

采用

canon曲

热播

电视剧《KYLE

XY》(

赐)

曲作

插曲

2007

剧《求婚

作战》

播放幻灯片

使用作

配乐

2008

本影片《十

约定》男主

公用吉

弹奏

欢迎分享,转载请注明来源:浪漫分享网

原文地址:https://hunlipic.com/jiehun/76400.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-06-17
下一篇2023-06-17

发表评论

登录后才能评论

评论列表(0条)

    保存