������ҵ����Ҫ��Сʰ������ѧϰ��һ�������ܹ����صļ����������ҷ���һ�¡����IJ������漰̫����ɬ�Ѷ��ļ��������Լ�����ϸ�ڣ�ֻ�ǶԼܹ�������һ�����������ɣ��ô��ҴӺ����϶������ܹ�������һ���������˽⡣�����漰�������Լ�֪ʶ�����£�
1�������ܹ�
2�������ܹ��IJ���
3��SOA������
4����������ȱ��
5����������Ϣ
6������
7����������
8������ע��
9�����ݵ�ȥ���Ļ�
1 �����ܹ�
WebӦ�ó�����չ�����ڣ���web�����ǽ����еĹ���ģ��(service side)������һ����һ��web���������У��ܶ���ҵ��JavaӦ�ó�������Ϊwar������������(Ruby��Python����C++)д�ij���Ҳ�����Ƶ����⡣
���������ڹ���һ�������̵�ϵͳ���ͻ��¶������˶��嵥�����ÿ����ȣ����������������ͻ����ܿ죬�����Ŷ�һ���ܹ���������ͼ��ʾ��ϵͳ��

���ֽ����й��ܶ�������һ��web���������е�ϵͳ�ͽ��������ܹ���Ҳ�У���ʯ��Ӧ�ã���
�����ܹ��кܶ��ô���IDE����Ϊ��������Ӧ�����Ƶġ����ײ��ԡ����ڱ��ؾͿ�������������ϵͳ�����ײ��𡪡�ֱ�Ӵ���Ϊһ�������İ���������web������ij��Ŀ¼�¼������С�
���ǣ������ĺô����������ģ�Ӧ�ò���ô���ӡ����ڴ���ģ�ĸ���Ӧ�ã������ܹ�Ӧ�û��Ե��ر����أ�Ҫ��һ���ط���Ҫ������Ӧ��ȫ������(PS���ڲ�ͬ�ij���������Ҳ����������);����ʱ������;�ع��������ڹ���;����Ч�ʽ��͵ȡ����⣬�����ܹ������ڸ��¼������ܣ�������Ը�⽫ϵͳȫ����д(����̫����Ը���ϰ�Ҳ��Ը��)��
2 �����ܹ��IJ���
��ϸһ����վ��ҵ������ģ����ʱ�ᷢ��ʲô����?�����Ȳ���?OK����web�����������ݿ�ѹ������?OK�����������������ݿ⡣���ݿ�̫����?��һ���������ݷֿ��洢���׳ơ��ֿ��ֱ�������Щ��û�����⣬good job�������������ij�������������ǿ������ͼFig2��

����ͼ������ά�ȸ�����һ��ϵͳ����չ���̣�
(1)x�ᣬˮƽ���ƣ����ڸ��ؾ��������������Ӷ���web������;
(2)z����չ���Ƕ����ݿ�����չ�����ֿ��ֱ�(�ֿ��ǽ���ϵ���ܵı�����һ̨���ݿ��������ϣ��ֱ�����Ϊһ�ű�������̫�࣬��Ҫ��һ�ű�������ͨ��hash���ڲ�ͬ�����ݿ���������);
(3)y����չ���ǹ��ֽܷ⣬����ְͬ�ܵ�ģ���ֳɲ�ͬ�ķ���y������������չ�����ܽ�����Ӧ�÷ֽ�Ϊһ�鲻ͬ�ķ��������綩���������ġ��ͻ���Ϣ�������ġ���Ʒ�������ĵȵȡ�
3 SOA������
SOA:��������ʽ�ܹ���SOA���Ǽ��ɶ����ϴ�������һ����Ӧ�ã���һ�ֻ��ƣ����ǽ����幹��һ���˴�Э��������һ����˵��ÿ����������ʼ����ִ��һ��������ҵ������ͨ����������������action�����ĸ��־��������빦�ܡ�����һ�㶼�������ϵģ����Ⲣ��SOA�ܹ�ģʽ��Ҫ����
��������һ�ּܹ�����ģʽ���������ܹ��У�ҵ���������ֳ�һϵ��С����ɢ���ϵķֲ�ʽ��������ͬ�����˽ϴ���Ӧ�á�ÿ������������Ϊ����ÿ���������������ܹ���ִ���ŵ��������������Ĺ��ܡ�ÿ���������ܻᱻһ�������������������ã���ִ�нϴ�Ӧ����Ҫ���ɵľ���������ϵͳ��Ϊ����ִ�С���������������ʾͼƬ����������������Ҫ����ִ�е������ṩ��ͳһ�Ľ���������ʽ��������Ӧ���ڲ�ͬ�ط����ɻ�ά����ͬ���ܵĶ����汾��
1��. ��������
2��. ��������
3��. ����һ������������
4��. ӵ���Լ������ݴ洢
5��. һ֧С�ŶӾ���ά����������
6��. ���滻��
������SOA���������£�

SOA���Խ�Ӧ�ü��ɣ�һ��������������ģʽ��ȷ����Ӧ���ܹ������������������Բ����¹��ܣ�������Ч����չ�����Ŷӡ��������ڷ�ɢ�������������������Զ���ִ�С�
4 ��������ȱ��
�����ܹ�ģʽ�кܶ��ô������ȣ�ͨ���ֽ�������Ӧ��Ϊ�������������˸��������⡣�ڹ��ܲ����������£�Ӧ�ñ��ֽ�Ϊ�����ɹ����ķ�֧��������ÿ����������һ���� RPC- ������Ϣ���� API ���������ı߽硣
�ڶ������ּܹ�ʹ��ÿ����������ר�ſ����Ŷ��������������߿�������ѡ���������ṩ API ������
�����������ܹ�ģʽʹ��ÿ�������������𣬿����߲�����ҪЭ���������������Ա�������Ӱ�졣
�����������ܹ�ģʽʹ��ÿ������������չ�������Ը���ÿ�������Ĺ�ģ����������������ʵ����
�����ܹ�Ҳ�в��㡣����һ���������������ƣ���������ǿ���˷�����С��ʵ���ϣ���һЩ�����߹Ĵ���������һЩ�ģ�10-100 LOC�����顣����С���������ڱ����ã����Dz�Ҫ��������ֻ�ǽ���������������Ŀ�ġ�������Ŀ������Ч�IJ���Ӧ�ã�ʵ�����ݿ����Ͳ�����
����һ������֮�����ڣ�����Ӧ���Ƿֲ�ʽϵͳ���ɴ˻��������еĸ����ԡ���������Ҫ�� RPC ������Ϣ����֮��ѡ�������ɽ��̼�ͨѶ���ơ����⣬���DZ���д������������Ϣ�������ٶȹ������߲����õȾֲ�ʧЧ���⡣
����һ��������������ս�����ڷ��������ݿ��ܹ���ͬʱ���¶���ҵ���������������ձ顣�����������ڵ���ʽӦ����˵�����ף���Ϊֻ��һ�����ݿ⡣�������ܹ�Ӧ���У���Ҫ���²�ͬ������ʹ�õIJ�ͬ�����ݿ⡣
����һ�����������ܹ���Ӧ��Ҳ�Ǻܸ��ӵ�����������һ����ս���ڣ������ܹ�ģʽӦ�õĸı佫�Შ������������һ������Ӧ��Ҳ�ܸ��ӣ�һ������Ӧ��ֻ��Ҫ�ڸ��Ӿ��������沿�����Եķ������ͺ��ˡ�ÿ��Ӧ��ʵ������Ҫ�����������ݿ�����Ϣ�м����Ȼ���������ÿ���������ж���ʵ���������γɴ�����Ҫ���á���������չ�ͼ��صIJ��֡�����֮�⣬�㻹��Ҫ����һ���������ֻ��ƣ����������з���������������������ͨѶ�����ĵ�ַ��������������ַ�Ͷ˿ڣ�
5 ������Ϣ
1����ͬ����Ϣ �C REST, Thrift
ͬ����Ϣ���ǿͻ�����Ҫ���ֵȴ���ֱ������������Ӧ����REST��������Ĭ�ϵ�ͬ����Ϣ��ʽ�����ṩ�˻���HTTPЭ������ԴAPI�����ļ�����Ϣ��ʽ���������������ַ�ʽ��ÿ�����ܴ�����һ����Դ�Ͷ�Ӧ�IJ�������
Thrift������һ����ѡ�ķ����������ýӿ��������Զ��岢����������֧�ֿ���չ�Ŀ����Է������������Ĵ����������������ڶ��������У��� C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, Smalltalk �ȴ�����Ч�ġ����ķ������䴫�����ݲ��ö����Ƹ�ʽ������ XML �� JSON ������С�����ڸ߲��������������Ͷ����ԵĻ����������ơ�
2�����첽��Ϣ �C AMQP, STOMP, MQTT
�첽��Ϣ���ǿͻ��˲���Ҫһֱ�ȴ�����Ӧ������Ӧ�������õ�֪ͨ��ijЩ������Ҫ�õ��첽��Ϣ��һ������AMQP, STOMP, MQTT��
3������Ϣ��ʽ �C JSON, XML, Thrift, ProtoBuf, Avro
��Ϣ��ʽ������������һ������Ҫ�����ء�SOA��web����һ�������ı���Ϣ�����ڸ��ӵ���Ϣ��ʽ��SOAP������Ϣ���壨xsd�����������ü��ı�Э��JSON��XML������HTTP����ԴAPI������������Ҫ�����ƣ�ͨ���õ�Thrift, ProtoBuf, Avro��
4��������Լ�� �C �����ӿ� �C Swagger, RAML, Thrift IDL
�����ѹ���ʵ��Ϊ������������Ҫ����һ��Լ���������ܹ��У�SOA����WSDL��WSDL���ڸ��Ӳ��Һ�SOAP�����ϣ����ʺ�������
REST���Ƶ�������ͨ������Swagger��RAML����Լ����
���ڲ��ǻ���REST���Ƶ�������Thrift��ͨ������IDL��Interface Definition Languages��������Thrift IDL��
6 ����
SOA��ϵ�£�����֮��ͨ����ҵ�������ߣ�Enterprise Service Bus��ͨ�ţ�����ҵ�������м��㣨��Ϣ��·�ɡ�ת������֯���������ܹ������ڽ���������Ϣ���ߣ�������ESB������������ҵ�����ֲ���ÿ�������ķ����նˡ�
����������HTTP��JSON�����ı�Э�飬���ɲ�ͬ����ʽ���IJ�����Ҫ������һ��ѡ���Dz�������������Ϣ���������أ���·�ɹ��ܣ�û�и��ӵ�ҵ�����������ͽ��ܼ��ֳ����ļܹ���ʽ��
1�������Ե㷽ʽ �C ֱ�ӵ��÷���
���Ե㷽ʽ�У�����֮��ֱ���á�ÿ��������REST API�����ҵ������������Ľӿڡ�

ͼ��ͨ�����Ե㷽ʽͨ��
�����ԣ��ڱȽϼ�����Ӧ�ó����£����ַ�ʽ�����У�����Ӧ�ø��Ӷȵ�������������Խ��Խ����ά����������Щ����SOA��ESB�����������õ��Ե��ļ��ɷ�ʽ��
2����API-���ط�ʽ
API���ط�ʽ�ĺ���Ҫ���ǣ����еĿͻ��˺����Ѷ˶�ͨ��ͳһ�����ؽ��������������ز㴦�����еķ�ҵ�����ܸ���ͨ��������Ҳ���ṩREST/HTTP�ķ���API��������ͨ��API-GWע������������
ͼ��ͨ��API-���ر�¶����

�����������̵������ӣ���ͼ5�У����е�ҵ���ӿ�ͨ��API���ر�¶�������пͻ��˽ӿڵ�Ψһ���ڡ�����֮����ͨ��Ҳͨ��API���ء�
�������ط�ʽ���������ƣ�
a.������Ϊ�����ӿ��ṩ���ز��εij����磺�����Ľӿڿ��Ը��ָ����������ز㣬���Զ��Ⱪ¶ͳһ�Ĺ淶�ӿڡ�
b.��������Ϣ·�ɡ���ʽת����
c.ͳһ���ư�ȫ�����ء������ȷ�ҵ�����ܡ�
d.ÿ�����������ø�����������ҵ�����ܸ��������ز�ͳһ����������ֻ��Ҫ��עҵ����
Ŀǰ��API���ط�ʽӦ���������ܹ���Ӧ�����㷺������ģʽ��
3������Ϣ������ʽ
����Ҳ���Լ������첽�ij����£�ͨ�����кͶ������⣬ʵ����Ϣ�ķ����Ͷ��ġ�һ��������������Ϣ�ķ����ߣ�����Ϣͨ���첽�ķ�ʽ���͵����л��߶��������¡���Ϊ�����ߵ��������ԴӶ��л��������ȡ��Ϣ��ͨ����Ϣ�м����ѷ���֮����ֱ�ӵ��ý��

ͼ���첽ͨ�ŷ�ʽ
ͨ���첽��������/������ģʽ��ͨ��AMQP��MQTT���첽��Ϣ�淶��
7 ��������
��������������ģʽ���ͻ��˷���ģʽ�ͷ����˷���ģʽ��
1�����ͻ��˷���ģʽ
ʹ�ÿͻ��˷���ģʽʱ���ͻ��˾�����Ӧ����ʵ��������λ�ã����Ҷ�����ʵ�ָ��ؾ��⡣�ͻ��˲�ѯ����ע������������һ�����÷���ʵ�������ݿ⣻Ȼ��ʹ�ø��ؾ����㷨����ѡ��һ��ʵ����������������
�ͻ��˴ӷ���ע�������в�ѯ�����������п��÷���ʵ���Ŀ⡣�ͻ���ʹ�ø��ؾ����㷨�Ӷ�������ʵ����ѡ����һ����Ȼ��������

����ʵ��������λ��������ʱ����¼������ע��������ʵ����ֹʱ��ɾ��������ʵ����ע����Ϣͨ��ʹ����������������ˢ�¡�
�ͻ��˷���ģʽ��ȱ�����С���һģʽ����ֱ�ӣ����˷���ע���⣬�������������䶯�����⣬���ڿͻ���֪�����õķ���ʵ�����������ض�Ӧ��ʵ�����ܸ��ؾ��⣬����ʹ�ù�ϣһ���ԡ�����ģʽ��һ��ȱ�����ǿͻ���������ע����Ҫ���Է������õ���ÿ���������ԺͿ��ܣ�ʵ�ֿͻ��˵ķ�����������
2���������˷���ģʽ
����һ�ַ������ֵ�ģʽ�Ƿ����˷���ģʽ����ͼչ��������ģʽ�ļܹ���

�ͻ���ͨ�����ؾ�������ij���������������ؾ�������ѯ����ע��������������ת�������õķ���ʵ������ͬ�ͻ��˷��֣�����ʵ���ڷ���ע������ע����ע����
AWS Elastic Load Balancer(ELB)�Ƿ����˷���·�ɵ����ӣ�ELB ͨ���������Ի��������ⲿ������Ҳ���������ؾ��� VPC��Virtual private cloud�����ڲ��������ͻ���ʹ�� DNS ͨ�� ELB ����������HTTP �� TCP����ELB ����ע���� EC2 ʵ���� ECS ����֮�为�ؾ��⡣���ﲢû�е����ķ���ע�������෴��EC2 ʵ���� ECS ����ע���� ELB��
�����˷���ģʽ������ȱ�㡣���������ŵ��ǿͻ���������ע���ֵ�ϸ�ڣ�ֻ��Ҫ�������ؾ����������������������˱������Կ�����Ҫ���ɵķ�����������������������ijЩ���������ṩ��һ���ܡ�����ģʽҲ��ȱ�㡣���Ǹ��ؾ������ɲ����ṩ����������Ϊһ����Ҫ���ú����ĸ߿���ϵͳ������
8 ����ע��
����ע�����Ƿ������ֵĺ��IJ��֣��ǰ�������ʵ����������ַ�����ݿ⡣����ע������Ҫ�߿��ö�����ʱ���¡��ͻ����ܹ������ӷ���ע�����л�ȡ��������ַ��Ȼ������Щ��Ϣ���ջ���ʱ���ͻ���Ҳ�������ַ���ʵ�������ˣ�����ע�������������ɷ����ˣ�ʹ�ø���Э�鱣��һ���ԡ�
�˽��˷���ע���ĸ������������˽�����ʵ��������ע������ע�ᡣ
��ǰ����������ʵ��������ע������ע����ע����ע����ע�������ֲ�ͬ�ķ���������һ�Ƿ���ʵ���Լ�ע�ᣬҲ����ע��ģʽ��self-registration pattern������һ���Dz��ù�������ʵ��ע��������ϵͳ��������������ע��ģʽ��
1������ע�᷽ʽ
��ʹ����ע��ģʽʱ������ʵ�������ڷ���ע������ע����ע�������⣬������Ҫ�Ļ���һ������ʵ��ҲҪ������������֤ע����Ϣ������ʱ����ͼ���������ּܹ���

��ע��ģʽ��ȱ���汸�������Լ���������ϵͳ������Ȼ����������Ҫȱ���ǰѷ���ʵ���ͷ���ע�������ϣ�������ÿ���������ԺͿ�����ʵ��ע�����롣
��һ������������������ע���������ϣ�������������ע��ģʽ��
2����������ע��ģʽ
ʹ�õ�����ע��ģʽ������ʵ��������Ҫ������ע����ע��෴������Ϊ����ע��������һ��ϵͳģ���ᴦ��������ע������ͨ����ѯ�����������¼��ķ�ʽ����������ʵ���ĸ��ġ�һ��������µĿ��÷���ʵ��������ע����ע���˷�����������Ҳ����ע����ֹ�ķ���ʵ��������������ģʽ�ļܹ�ͼ��

������ע��ģʽҲ����ȱ�����ߡ��ڵ�����ע��ģʽ�У�����������ע���������ϣ�����Ϊÿ���������ԺͿ���ʵ�ַ���ע�������෴������ʵ��ͨ��һ��ר�з��������Ļ��ķ�ʽ���й��������IJ���֮�����ڣ����Ǹ÷��������ڲ�����������Ҫ���ú���һ���߿��õ�ϵͳ������
9 ����ȥ���Ļ�
�����ܹ��У���ͬ���ܵķ���ģ�鶼�����ݴ洢��ij���������ݿ��С�

ͼ�������ܹ�����һ�����ݿ��洢��������
������ʽ����������֮�������������������ҲӦ������������磬ij�����������ݿ��ṹ���巽ʽ�ı䣬���ܻ��ж������������ˣ�ÿ��������Ӧ�����Լ������ݿ⡣

ͼ��ÿ���������Լ�˽�е����ݿ⣬������������ֱ�ӷ��ʡ�
����ȥ���Ļ��ĺ���Ҫ�㣺
1����ÿ���������Լ�˽�е����ݿ��־û�ҵ������
2����ÿ������ֻ�ܷ����Լ������ݿ⣬�����ܷ����������������ݿ�
3����ijЩҵ���£���Ҫ��һ�������и��¶������ݿ⡣��������Ҳ����ֱ�ӷ����������������ݿ⣬����ͨ�������������в�����
���ݵ�ȥ���Ļ�����һ������������֮�������϶ȣ���ͬ�������Բ��ò�ͬ�����ݿ⼼����SQL��NoSQL�ȣ����ڸ��ӵ�ҵ���£�������������������ͨ���ڿͻ��˻����м��㣨���أ�������
д���������ἰ�ܹ���Сʰ����Ϊû�о������õļܹ���ֻ�����ʺ�ҵ���ļܹ��������ܹ�Ӧ�ô�ҵ����������ҵ����ȥ����������ҵ��������ҵ������Ϊ�������������ǣ�����һζ�����ܹ����ܹ������DZ����ڹ�˾ҵ����չ���Ŷ���Դ�м���һ�����ʵ�ѡ����Ȼ������ҵ���ķ�չ�����ع����Ż���